minikube 基础控制命令实战指南:从启动集群到部署应用与多集群管理
2026/9/19 5:42:11 网站建设 项目流程

minikube 基础控制命令实战指南:从启动集群到部署应用与多集群管理

【免费下载链接】minikubeRun Kubernetes locally项目地址: https://gitcode.com/gh_mirrors/mi/minikube

本文是 minikube(Run Kubernetes locally)官方 Handbook 中 "Basic controls" 一节的完整技术指南,覆盖集群的启动、Dashboard 访问、应用部署与暴露、版本升级、多集群(Profile)管理以及停止与删除等全部基础操作。读完本文,你将掌握 minikube 日常使用频率最高的 8 组命令及其核心参数,并能结合源码理解每条命令背后的实现机制,从而在本地开发环境中高效地创建、使用和销毁 Kubernetes 集群。

一、快速上手:一条命令启动本地 Kubernetes 集群

启动集群是使用 minikube 的第一步,也是最核心的一条命令:

minikube start

执行后,minikube 会自动完成驱动探测(Docker、Podman、KVM、QEMU、VirtualBox 等)、基础镜像拉取、kubeadm 引导 Kubernetes 控制面等一整套流程。如果本机从未使用过 minikube,首次启动会额外下载 kicbase 镜像与所需二进制文件,耗时较长;之后再次启动时会复用已有缓存,速度明显提升。

从源码看,start命令的初始化集中在 cmd/minikube/cmd/start.go 与 cmd/minikube/cmd/start_flags.go 中。start_flags.go 中定义了startCmd的全部标志位,例如--driver(自动探测)、--nodes/-n(节点数,默认 1)、--container-runtime--memory等;start.go 则负责依次执行驱动检查、配置校验、镜像准备与 Kubernetes 引导,并在启动前通过validateKubernetesVersion(cmd/minikube/cmd/start.go)校验 Kubernetes 版本合法性。

二、访问 Kubernetes Dashboard:minikube dashboard

minikube 内置了 Kubernetes Dashboard 插件,启动集群后可直接访问集群内的 Web 控制台:

minikube dashboard

该命令的实现位于 cmd/minikube/cmd/dashboard.go,其完整流程为:

  1. 检查dashboard插件是否已启用,若未启用则自动执行addons.SetAndSave(cname, "dashboard", "true", options)将其开启(对应源码 cmd/minikube/cmd/dashboard.go);
  2. kubernetes-dashboard命名空间下反复探测kubernetes-dashboardService 的健康状态(带指数退避重试);
  3. 后台启动kubectl proxy,默认端口为 0(即由系统随机分配一个可用端口);
  4. 校验代理 URL 可访问后,调用系统默认浏览器打开http://<host>:<port>/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

dashboard命令还提供两个实用参数(见 cmd/minikube/cmd/dashboard.go):

参数默认值说明
--urlfalse只打印 Dashboard 的访问 URL,不打开浏览器,适合脚本或远程环境(root 用户下也会自动退化为仅输出 URL)
--port0指定 kubectl proxy 暴露的端口,设为 0 表示随机分配
# 只获取 URL,便于集成到自动化脚本 minikube dashboard --url # 固定使用 8001 端口访问 minikube dashboard --port=8001

三、像使用正式集群一样使用 kubectl

集群启动后,minikube 会自动把当前集群写入本地 kubeconfig 并设为当前 context,因此你可以直接用kubectl操作它,与操作任何标准 Kubernetes 集群完全一致。例如部署一个测试应用:

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0

这里使用kicbase/echo-server:1.0镜像创建名为hello-minikube的 Deployment,它是一个简易的 HTTP echo 服务,非常适合验证集群工作负载。

接着,将该 Deployment 以 NodePort 类型暴露为 Service:

kubectl expose deployment hello-minikube --type=NodePort --port=8080

--type=NodePort会在每个节点上分配一个高位端口(30000–32767 范围内),并把容器端口 8080 映射出去,这样集群外部(即宿主机)即可访问该服务。

四、一行命令打开服务:minikube service

暴露为 NodePort 后,手动拼写http://<节点IP>:<NodePort>并不方便,minikube 提供了service子命令一键在浏览器中打开该端点:

minikube service hello-minikube

其实现见 cmd/minikube/cmd/service.go:命令会先调用service.GetServiceURLs获取集群内服务对应的访问 URL 列表,再针对每个 URL 等待服务真正就绪后打开浏览器;对于 Docker/Podman 这类 KIC(Kubernetes in Container)驱动,minikube 会自动建立端口转发,使容器内端口可从宿主机直接访问(对应源码中的startKicServiceTunnel逻辑)。

service命令常用参数(定义于 cmd/minikube/cmd/service.go):

参数默认值说明
--urlfalse只打印访问 URL,不打开浏览器
-n, --namespacedefault指定服务所在的命名空间
--httpsfalse以 https 协议访问
--formathttp://{{.IP}}:{{.Port}}自定义 URL 输出模板,支持{{.Name}}{{.IP}}{{.Port}}等字段
--allfalse列出/打开当前命名空间下的全部服务
--wait/--interval2/1(秒)等待服务就绪的超时时间与轮询间隔
# 只打印 URL,供脚本消费 minikube service hello-minikube --url # 指定命名空间 minikube service hello-minikube -n my-namespace # 一次查看命名空间内所有服务 minikube service --all # 使用自定义 URL 模板 minikube service hello-minikube --url --format="http://{{.IP}}:{{.Port}}/hello"

注意:对于ClusterIP类型的服务,minikube 同样允许本地访问(控制台会给出提示),这是为本地开发提供的便利特性。

五、升级集群:minikube start --kubernetes-version

minikube 允许通过start命令的--kubernetes-version参数指定或升级 Kubernetes 版本:

minikube start --kubernetes-version=latest

kubernetes-version标志的完整语义定义在 cmd/minikube/cmd/start_flags.go:

The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for ... , 'latest' for ...). Defaults to 'stable'.

其取值规则(见 cmd/minikube/cmd/start.go 的getKubernetesVersion函数):

取值含义
不指定 /stable使用默认版本,即当前 minikube 发行版配套的稳定版(大小写不敏感)
latest/newest使用当前 minikube 支持的最新 Kubernetes 版本
v1.37.0这类完整版本号使用指定版本,支持v1.37这类省略 patch 的写法,minikube 会自动解析为最新 patch 版本
--no-kubernetes--kubernetes-version同时指定报错退出,二者互斥

版本校验由validateKubernetesVersion(cmd/minikube/cmd/start.go)负责:它会将请求版本与当前 minikube 支持的版本区间比较,超出范围的版本默认拒绝启动,但可通过--force强制使用;同时它禁止对已有集群执行降级操作(Unable to safely downgrade existing Kubernetes ...),如需降级需新建集群。

以当前仓库 pkg/minikube/constants/constants.go 中的常量为例,DefaultKubernetesVersionNewestKubernetesVersion均为v1.37.0OldestKubernetesVersionv1.28.0,即当前版本支持 v1.28.0 ~ v1.37.0 区间内的集群(具体数值随 minikube 版本迭代而变化,请以你所用版本的minikube config defaults kubernetes-version输出为准)。注意:升级操作会通过start在已有集群上重建控制面组件,属于就地升级,而非新建集群。

# 显式指定某个具体版本 minikube start --kubernetes-version=v1.36.0 # 查看当前 minikube 支持的默认版本 minikube config defaults kubernetes-version

六、多集群管理:Profile 机制

minikube 通过 Profile(配置文件)机制支持在单台机器上并行运行多个相互独立的集群,每个集群拥有独立的名称、配置与数据目录:

minikube start -p cluster2

-p(等价于--profile)是定义在 cmd/minikube/cmd/root.go 的全局持久标志,默认值为minikube。使用-p cluster2启动后,minikube 会创建名为cluster2的全新集群,与默认集群互不干扰;kubeconfig 中也会新增对应的 context(如cluster2),可用kubectl config use-context cluster2切换。

重要限制:该功能在使用 bare-metal/none 驱动(即直接在宿主机上运行 Kubernetes,不借助虚拟机或容器)时不可用——因为 none 驱动直接使用宿主机环境,无法在同一台机器上并行启动多个隔离集群,正如本文开头所述 "This will not work if minikube is using the bare-metal/none driver"。

多集群相关的常用操作:

# 列出所有集群/Profile 及其状态 minikube profile list # 切换默认操作的集群 minikube profile cluster2 # 使用指定集群执行其他命令(等价于 -p) minikube dashboard -p cluster2 minikube stop -p cluster2

七、停止集群:minikube stop

暂停使用集群时,执行:

minikube stop

stop的实现见 cmd/minikube/cmd/stop.go,其 Long 描述明确了行为边界:停止底层 VM 或容器,但保留全部用户数据,之后随时可用minikube start恢复。停止时节点会按逆序依次关停(多节点集群先停 worker 节点,最后停主控节点,以便下次启动时主控节点优先恢复,见 cmd/minikube/cmd/stop.go)。

stop命令提供以下参数(定义于 cmd/minikube/cmd/stop.go):

参数说明
--all停止所有 Profile 下的集群
--keep-context-active停止后仍保留 kubeconfig 中对应的 context 为当前 context(默认停止后会切换/清理)
--schedule=5m定时停止,例如--schedule=5m表示 5 分钟后自动停止(后台守护进程实现)
--cancel-scheduled取消已存在的定时停止请求
-o, --output输出格式,可选textjson
# 5 分钟后自动停止当前集群 minikube stop --schedule=5m # 停止全部集群 minikube stop --all

八、删除集群:minikube delete

彻底销毁集群时执行:

minikube delete

stop不同,delete破坏性操作:它会删除 VM/容器、以及所有关联文件(对应源码 cmd/minikube/cmd/delete.go 的 Long 描述:"This command deletes the VM, and removes all associated files")。从 cmd/minikube/cmd/delete.go 可以看到,删除流程依次执行:终止挂载进程、停止 ssh-agent、删除宿主机条目、清理 Profile 与机器目录、删除本地配置与 kubeconfig 中的 context,并对 KIC 驱动额外清理带 minikube 标签的容器、卷与镜像。

删除所有本地集群及 Profile:

minikube delete --all

delete命令常用参数(定义于 cmd/minikube/cmd/delete.go):

参数说明
--all删除所有 Profile 下的集群
--purge同时删除用户目录下的整个.minikube文件夹(含缓存、配置文件等全部数据)
-o, --output输出格式,可选textjson
# 连同缓存数据一并清除 minikube delete --purge # 删除指定 Profile 的集群 minikube delete -p cluster2

九、小结:minikube 基础控制命令速查

目的命令
启动集群minikube start
访问 Dashboardminikube dashboard [--url] [--port=N]
部署应用kubectl create deployment <name> --image=<image>
暴露服务kubectl expose deployment <name> --type=NodePort --port=<port>
打开服务minikube service <name> [--url] [-n <ns>]
升级 Kubernetesminikube start --kubernetes-version=latest
启动第二个集群minikube start -p <profile>(none 驱动不支持)
停止集群minikube stop [--all] [--schedule=5m]
删除集群minikube delete [--all] [--purge]

以上命令构成了 minikube 本地开发工作流的最小闭环:start建集群 →kubectl/dashboard用集群 →service验证应用 →stop/delete回收资源。所有命令的完整参数与实现细节,可继续深入阅读 cmd/minikube/cmd 目录下对应的源码文件,以及 site/content/en/docs/handbook 中的其他 Handbook 章节。

【免费下载链接】minikubeRun Kubernetes locally项目地址: https://gitcode.com/gh_mirrors/mi/minikube

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

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

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

立即咨询