安装 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.mdkubernetes-quickstart-pv-pvc.mdkubernetes-quickstart-storageclass.md
如果集群被你实验坏了
作为本地沙盒,Minikube 很适合反复试错。装错 CRD、控制器删不掉、网络规则乱掉,都不罕见。
排除本机资源不足之后,不要总想着一点点修历史包袱。本地实验环境最省时间的修复方式,经常就是重启或重建。
# 暂停本地集群
minikube stop
# 删除并清理全部本地 Minikube 数据
minikube delete --all --purge
能快速重建,是本地实验集群最大的好处之一。