minikube v1.27.0 time-to-k8s 基准测试解读:与 kind、k3d 的启动耗时与 CPU 开销对比
2026/9/20 1:24:32 网站建设 项目流程
  • 云原生
  • 容器编排
  • CLI
  • 开发工具

【免费下载链接】minikube

Run Kubernetes locally

项目地址:https://gitcode.com/gh_mirrors/mi/minikube
点击查看免费下载

本篇技术指南围绕 minikube 官方基准文档 site/content/en/docs/benchmarks/timeToK8s/v1.27.0.md 展开,完整解读 minikube v1.27.0 与 kind、k3d 三款本地 Kubernetes 方案的 "从零到集群可用"(time-to-k8s)耗时与 CPU 开销实测数据,并结合仓库内hack/benchmark/time-to-k8s/的基准工具链源码,讲清每一项指标的含义、数据的产生方式以及该基准页面的自动生成机制。读完本文,你将能准确读懂 minikube 官方基准表格与图表,理解 6 个耗时阶段和 2 项 CPU 指标的定义,并掌握如何基于仓库脚本自行复现这套对比基准。

一、基准文档是什么:v1.27.0 发布的性能快照

minikube 仓库为每个发布版本保留一份 "time-to-k8s" 基准快照,存放在 site/content/en/docs/benchmarks/timeToK8s/ 目录下,从 v1.20.0 一直持续到 v1.36.0,v1.27.0.md正是 minikube v1.27.0 版本对应的那一份。

该文档的结构非常固定,包含两个部分:

  1. time-to-k8s 分段耗时表格(单位为秒)及对应的堆叠柱状图;
  2. CPU 利用率与 CPU 时间表格及对应的分组柱状图。

被测对象是三款主流的本地 Kubernetes 工具:

工具被测版本
minikubev1.27.0
kindv0.15.0 go1.19 linux/amd64
k3dversion v5.4.6

测试环境为 GitHub 托管的 Linux/amd64 标准 runner。整个系列基准由 hack/benchmark/time-to-k8s/ 下的自动化脚本持续产出,v1.27.0.md只是其中一个版本快照;同目录下另有 daily_benchmark.md 展示针对 HEAD 的每日趋势图,可按 benchmarks 总览页 继续阅读其他版本快照。

二、指标定义:time-to-k8s 到底在测量什么

"time-to-k8s"(Time to go from 0 to successful Kubernetes deployment)衡量的是:在全新环境里,从执行启动命令开始,到集群部署成功、应用可访问所经历的总时间。基准工具把整个过程拆成 6 个阶段,由 hack/benchmark/time-to-k8s/chart.go 中的run结构体可见其字段顺序与文档表格一一对应:

阶段指标含义代码字段
Command Exec启动命令从下发到返回的耗时cmd
API Server AnsweringAPI Server 开始响应请求api
Kubernetes SVCKubernetes 核心 Service 就绪k8s
DNS SVCkube-dns/CoreDNS Service 就绪dnsSvc
App Running示例应用 Pod 进入 Running 状态app
DNS Answering集群内 DNS 域名解析成功响应dnsAns

Total(总计)并非独立测量项,而是 6 个阶段耗时之和,见 chart.go 中的total := cmdAvg + apiAvg + k8sAvg + dnsSvcAvg + appAvg + dnsAnsAvg

CPU 部分则由两个指标构成(cpu.go 中定义):

  • CPU Utilization(%):整个基准运行期间的平均 CPU 利用率百分比;
  • CPU Time(seconds):累计消耗的 CPU 时间(秒)。

需要说明的是,这些指标反映的是单次发布快照在特定 runner 硬件上的表现,绝对数值会随机器环境波动;更有参考价值的是同一环境下三款工具的横向相对差距。

三、v1.27.0 time-to-k8s 实测数据与图表

以下是该基准文档中的完整 time-to-k8s 耗时数据(单位:秒):

minikube version: v1.27.0kind v0.15.0 go1.19 linux/amd64k3d version v5.4.6
Command Exec28.50420.21515.026
API Server Answering0.0770.0780.097
Kubernetes SVC0.0650.0600.060
DNS SVC0.0610.0600.060
App Running14.90323.03911.824
DNS Answering8.7020.6372.770
Total52.31244.08929.837

该图表由 chart.go 中的createChart生成:6 个阶段按 "Command Exec → API Server Answering → Kubernetes SVC → DNS SVC → App Running → DNS Answering" 的顺序自下而上堆叠成柱状图(bars[0].StackOn(bars[1])逐层叠放),图例置于顶部,并在每根柱子上方标注总计耗时(Y 轴上限固定为 80 秒)。

数据要点分析

从这份实测数据可以观察到几个关键现象:

  1. Command Exec 是最大的耗时项:minikube 的 28.504 秒占总耗时 52.312 秒的 54.5%,kind 与 k3d 的该项同样占比最大。这一阶段涵盖镜像拉取、虚拟机/容器节点创建、kubeadm 初始化等重活,直接决定三款工具的启动体验。
  2. API Server、Kubernetes SVC、DNS SVC 三个就绪阶段三者差距极小:均在 0.06~0.10 秒量级,说明这三款工具在控制面组件启动后的就绪速度上没有实质差异。
  3. App Running 阶段 minikube 明显快于 kind:14.903 秒对 kind 的 23.039 秒,节省约 8.1 秒;但仍慢于 k3d 的 11.824 秒。
  4. DNS Answering 是 minikube 相对明显的短板:8.702 秒远高于 kind 的 0.637 秒和 k3d 的 2.770 秒,这是本次快照中 minikube 与对手差距最大的单项。

总体而言,本次快照中k3d 总耗时最短(29.837 秒),kind 居中(44.089 秒),minikube v1.27.0 为 52.312 秒。需要强调的是,这只是一次发布版本的横向快照,minikube 后续版本的持续优化可在 timeToK8s 目录 的后续版本文档中追踪对比。

四、v1.27.0 CPU 开销实测数据与图表

文档第二部分是 CPU 资源开销数据:

minikube version: v1.27.0kind v0.15.0 go1.19 linux/amd64k3d version v5.4.6
CPU Utilization(%)38.82246.72044.883
CPU Time(seconds)19.22420.57013.381

该图表由 cpu.go 中的createCPUChart生成:针对 "CPU Utilization(%)" 和 "CPU Time(seconds)" 两个字段,三款工具各画一根并列的柱(分别以-w0+w偏移错开),Y 轴上限取数据最大值加 5 自适应。

数据要点分析

  • CPU 利用率:minikube 以 38.822% 在三者中最低,kind 为 46.720%,k3d 为 44.883%。从启动期间对宿主 CPU 的占用来看,本次快照中 minikube 表现最省。
  • CPU 时间:minikube 为 19.224 秒,与 kind 的 20.570 秒基本相当,k3d 的 13.381 秒最低。

综合两个指标可以推断:minikube v1.27.0 在这台测试机器上以最低的平均 CPU 占用完成了启动,但其累计 CPU 时间并未像 k3d 那样压缩到更低水平,说明耗时更多体现在墙钟时间(wall-clock)而非 CPU 忙等上——这与上一节中 Command Exec、DNS Answering 两项偏高的现象是相互印证的。

五、这套基准是如何自动化产出的

v1.27.0.md并非手写文档,而是由仓库内基准工具链自动生成。完整流程记录在 hack/benchmark/time-to-k8s/time-to-k8s.sh 中,主要分为四步:

  1. 安装被测工具install_kindinstall_k3d分别下载 kind 与 k3d 的最新发布版;install_minikube则通过make从当前源码构建 minikube 并安装到/usr/local/bin,保证被测的是仓库当前代码
  2. 运行基准run_benchmark进入 git 子模块time-to-k8s-repo(该子模块在仓库中以 submodule 形式维护,镜像内此目录为空,需git submodule update --init拉取),执行:
    go run . --config local-kubernetes.yaml --iterations 10 --output output.csv

    即针对三款工具各迭代 10 次取平均,结果写入 CSV。

  3. 生成页面与图表create_page调用 page.go:
    go run ./hack/benchmark/time-to-k8s/*.go \ --csv ./hack/benchmark/time-to-k8s/time-to-k8s-repo/output.csv \ --image ./site/static/images/benchmarks/timeToK8s/"$VERSION" \ --page ./site/content/en/docs/benchmarks/timeToK8s/"$VERSION".md
  4. 清理临时 CSV,保留最终产物。

从源码看数据与页面的对应关系

page.go 内嵌了一个page模板,生成的 Markdown 结构与v1.27.0.md完全一致:

title: "{{.Version}} Benchmark" ... time-to-k8s {{.TimeMarkdown}} cpu-to-k8s {{.CPUMarkdown}}

细节上值得注意的几点:

  • 版本信息来自被测产物本身:页面标题中的版本号通过执行minikube version --short获取(page.go),而非写死,保证文档与二进制一致;
  • front matter 的 weight 取生成日期data.Weight = time.Now().Format("20060102"),因此v1.27.0.mdweight: -20220915表示该页面生成于 2022-09-15;
  • CSV 解析规则:每行第 8~16 列是运行结果,第 1~6 个数值依次对应 6 个耗时阶段,第 7、9 个数值对应 CPU 利用率与 CPU 时间(chart.go);各工具的版本字符串取自 CSV 第 6 列(d[5]);
  • 聚合方式values()函数对三款工具分别累加所有迭代并求平均(chart.go),表格与图表共用同一份聚合数据,因此文档中表格与图片数值天然一致;
  • Markdown 表格渲染:耗时表与 CPU 表分别由outputMarkdownTable(chart.go)和cpuMarkdownTable(cpu.go)生成,字段名 "Command Exec"、"CPU Utilization(%)" 等硬编码在源码中。

由此可以确认:本文第三节、第四节呈现的两张表格与两张图表,正是上述自动化流水线对 10 次迭代取平均后的直接产物。

六、结论与进一步阅读

minikube v1.27.0 的这份基准快照表明:

  • 总耗时:k3d(29.837s)< kind(44.089s)< minikube v1.27.0(52.312s),主要差距集中在 Command Exec 与 DNS Answering 两个阶段;
  • CPU 资源:minikube v1.27.0 的 CPU 利用率(38.822%)在三者中最低,CPU 时间(19.224s)与 kind 相当;
  • 就绪速度:三款工具在 API Server、Kubernetes SVC、DNS SVC 就绪阶段几乎没有差异(均在 0.1 秒内)。

如果你希望跟踪这项指标随版本的演化,可以参考:

  • timeToK8s 基准总览 与 每日基准趋势;
  • 同目录下其他版本快照(如 v1.26.1.md、v1.28.0.md)用于对比版本间变化;
  • 基准工具源码 time-to-k8s.sh、chart.go、cpu.go、page.go 用于理解甚至复现整套测量流程。

需要提醒的是,本数据为单次发布快照、单机环境结果,不同硬件与驱动(Docker/containerd/VirtualBox 等,参见 daily_benchmark.md 中按 driver-runtime 组合区分的趋势图)下结论可能不同;将其视为版本间相对趋势的参考而非绝对性能承诺,是更合理的解读方式。

  • 云原生
  • 容器编排
  • CLI
  • 开发工具

【免费下载链接】minikube

Run Kubernetes locally

项目地址:https://gitcode.com/gh_mirrors/mi/minikube
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询