CFN Cloud
2025-10-03

安装 Minikube 并启动本地 Kubernetes 集群

用 Minikube 在本地快速启动一个可反复实验的 Kubernetes 单节点集群,适合学习、验证 YAML 和调试基础工作流。

刚接触 Kubernetes 时,很多人会有个冲动:找几台机器或虚机,从零开始用 kubeadm 搭集群。 这当然能学到东西,但也很容易把精力耗在网络插件、证书、内核参数和系统兼容性上。结果是集群还没跑稳,连一个 nginx Pod 都没来得及认真看。

入门阶段最重要的是先学会操作集群、观察状态和修复小故障,而不是一开始就陷进安装细节。

对于学习、写实验 YAML 和本地验证逻辑,Minikube 是最省事的入口之一。 它是 Kubernetes 官方长期维护的单节点开发集群工具,可以在本机快速拉起一个真实 Kubernetes API,让你放心地改、弄坏、删除、重建。

前置准备:你的本地环境

确保你当前使用的是 64 位系统,并且符合下列其一:

  • 已经安装了 Docker Desktop / 开启了系统底层虚拟化(Hyper-V / VT-X)
  • 如果用虚拟机驱动,保证本机起码能腾出 2核 CPU、4G 乃至更多的空闲物理内存 用于划拨。

同时需要提前装好 kubectl 客户端。 Linux 用户可以直接这么装:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 验证客户端可用
kubectl version --client

安装并启动 Minikube

Minikube 本身就是一个独立二进制包。

# 获取引擎本身(以 Linux 举例)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

启动时明确资源配置

Minikube 默认资源偏小。多跑几个 Pod,或者启用 Metrics Server、Ingress 这类组件后,很容易遇到节点内存紧张甚至 OOM。

建议一开始就明确 CPU 和内存,Docker 驱动通常最省事:

# 给本地实验留出足够资源
minikube start --driver=docker --cpus=4 --memory=6g

# 确认集群状态
minikube status

# 确认 API Server 能响应
kubectl get nodes

先理解本地网络边界

用 Minikube 时,新手很容易卡在一个问题上:为什么我在本地浏览器访问 localhost:80,看不到集群里的 Pod?

原因是:Minikube 把集群放在本机的虚拟机或容器网络里。 集群里的 Service IP 和 Pod IP 都属于这层私有网络,宿主机不能直接当作普通本地端口访问。

怎么访问集群里的服务

方式一:NodePort + minikube service 这是最直接的本地访问方式。创建好 Service 后,让 Minikube 帮你打开一个可访问的本地 URL。

minikube service <your-svc-name> --url

它会返回一个可以在宿主机浏览器里直接访问的地址。

方式二:kubectl port-forward 临时转发 如果只是调试某个 Pod 或 Service,不想改正式暴露方式,用它最方便。

# 把宿主机 8080 转发到集群内 Service 的 80 端口
kubectl port-forward svc/<your-svc-name> 8080:80

这是本地调试里最常用的动作之一。

如果你想把这种临时调试链路彻底看明白,可以继续读 kubernetes-quickstart-port-forward.md;如果你更想理解 Service 作为正式入口的工作方式,则更适合配合 kubernetes-quickstart-service.md 一起看。

方式三:启用 Ingress 如果你想练习域名路由和 HTTP 入口,Ingress 更接近真实环境。

# 启用 Nginx Ingress 控制器
minikube addons enable ingress

# 获取 Minikube IP,再把测试域名写入本机 hosts
minikube ip

没推送到 DockerHub 的镜像怎么玩?

本地开发时,不一定要先把镜像推到 DockerHub 或其他公网 Registry。Minikube 可以直接把宿主机上的镜像加载进集群节点。

# 把本地构建好的镜像加载进 Minikube
minikube image load my-app:dev

# 让 Deployment 使用新镜像
kubectl set image deployment/hello web=my-app:dev

顺手把存储链路也跑一遍

Minikube 也特别适合练本地存储链路。你可以先申请一个 PVC,再观察它如何绑定,然后把它挂到工作负载上。这样会非常直观地把 Volume -> PVC -> StorageClass 这条线跑通。

如果你想系统理解这块,建议顺着继续读:

  • kubernetes-quickstart-volume-basics.md
  • kubernetes-quickstart-pv-pvc.md
  • kubernetes-quickstart-storageclass.md

如果集群被你实验坏了

作为本地沙盒,Minikube 很适合反复试错。装错 CRD、控制器删不掉、网络规则乱掉,都不罕见。

排除本机资源不足之后,不要总想着一点点修历史包袱。本地实验环境最省时间的修复方式,经常就是重启或重建。

# 暂停本地集群
minikube stop

# 删除并清理全部本地 Minikube 数据
minikube delete --all --purge

能快速重建,是本地实验集群最大的好处之一。