注意:minikube 实践操作建议在科学上网环境下进行,非科学上网稍等曲折,适合想要挑战的同学。
minikube 是什么?
minikube 是 Kubernetes 官方提供的本地单节点集群工具,可以在你的电脑(Mac / Linux / Windows)上快速搭建一个完整的 K8s 环境。

为什么 minikube 是 K8s 入门最佳选择?
零成本,即装即用
对电脑要求低
- 支持 VirtualBox、Docker、Hyper-V 等多种驱动
- 最低 2 核 CPU + 2GB 内存即可运行
- 笔记本也能跑
功能完整
- 包含 Master + Worker 节点
- 支持 Dashboard、Ingress、StorageClass
- 与生产环境 K8s 功能一致
学习曲线平缓
- 不需要懂集群、网络、存储等复杂概念
- 专注学习 K8s 核心概念,而不是运维
- 出错容易排查,本地调试方便
官方推荐
- Kubernetes 官方文档推荐的本地开发工具
- 与 kubectl 无缝集成
- 社区活跃,文档完善
实践开始
当前实践默认已经下载安装好minikube,如果没有可以参考官网下载安装。
启动 minikube 启动集群(需要科学上网)
如果本地安装了 Docker,minikube 会默认选择 Docker 作为驱动。
# 使用国内镜像源
minikube start --image-mirror-country='cn'
# 如果上述命令仍然拉取基础镜像失败,可强行指定 aliyuncs 镜像
minikube start --image-mirror-country='cn' --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.50'💡 常用启动参数解析
(注:完整参数可使用 minikube start --help 查看,这里仅列出最常用的)
--cpus=2: 分配给 K8s 的 CPU 核心数,默认 2。--memory=4g: 分配给 K8s 的内存大小,建议开发环境至少分配 4g。--disk-size=20g: 分配给虚拟机的磁盘大小,默认 20g。--driver=docker: 强制指定驱动(可选 docker, virtualbox, hyperv, vmware 等)。--kubernetes-version=v1.28.0: 指定启动的 K8s 版本,默认为 stable 版本。--cni=calico: 指定 CNI 网络插件(可选 auto, bridge, calico, cilium, flannel 等)。-n, --nodes=3: 启动多节点集群(minikube 也支持模拟多节点!)。--ha=true: 创建高可用的多控制平面集群。
启动dashboard(科学上网)
为了便于开发实践,增加趣味性,强烈建议启动 Dashboard,告别纯黑底命令行的枯燥。

minikube dashboard- 启动完成后会出现以下信息
PS C:\Users\desktop> minikube dashboard
🤔 正在验证 dashboard 运行情况 ...
🚀 正在启动代理...
🤔 正在验证 proxy 运行状况 ...
PS C:\Users\desktop> minikube dashboard
🤔 正在验证 dashboard 运行情况 ...
🚀 正在启动代理...
🤔 正在验证 proxy 运行状况 ...
🎉 正在使用默认浏览器打开 http://127.0.0.1:51954/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ...查看集群基础状态
# 查看所有命名空间的 pod
kubectl get pods --all-namespaces
# 查看集群节点信息
kubectl get nodes
# 查看 pod 日志(通过查看日志可以快速定位排错)
kubectl logs --namespace=kube-system <pod-name>
# 实时跟踪日志输出(非常实用)
kubectl logs -f --namespace=xxx <pod-name>
kubectl describe pod <pod-name>
# 查看默认命名空间下的所有资源(Pod, Service, Deployment等)
kubectl get all
# 以宽格式输出(可以查看 Pod 的 IP 和所在 Node)
kubectl get pods -o wide
# 查看特定标签的 Pod
kubectl get pods -l app=hello-minikube
# 将本地的 8080 端口映射到 Service 的 80 端口
kubectl port-forward service/hello-minikube 8080:80 Hello World
启动一个Nginx示例
创建部署应用实例
kubectl create deployment hello-minikube --image=nginx:latest- create deployment:创建一个 Deployment 资源
- hello-minikube: 应用名称
- --image=nginx:latest:使用的容器镜像
K8s 实际做了什么:
- 拉取 nginx:latest 镜像
- 创建 Pod(容器运行载体)
- 监控 Pod 状态,确保始终有指定数量的副本运行(自愈能力)
暴露 Service(服务)
让外部可以访问这个应用
kubectl expose deployment hello-minikube --type=NodePort --port=80- expose deployment:为 Deployment 创建一个 Service
- --type=NodePort:通过节点端口访问
- --port=80:Service 监听的端口
两者的关系
Deployment(部署) → 负责"运行"容器
↓
Service(服务) → 负责"访问"容器
--------------------------------------
用户请求
↓
Service (NodePort: 3xxxx)
↓
Pod (nginx 容器)
↓
Nginx 镜像 测试访问
- 直接打开浏览器访问
minikube service hello-minikube
- 获取访问地址
minikube service hello-minikube --url 测试完成之后我们可以通过以下命令清理删除
删除服务
kubectl delete service hello-minikube删除应用
kubectl delete deployment hello-minikube停止您的本地集群(保留数据,下次启动更快)
minikube stop删除您的本地集群(谨慎,会清除当前集群的所有数据)
minikube delete
删除所有本地集群和配置(极度谨慎,会清空一切 minikube 状态)
minikube delete --all🚨 常见问题排查
ImagePullBackOff / ErrImagePull
- 原因:无法拉取镜像。
- 解决:检查是否开启了科学上网;如果是国内环境,确保启动时加了 --image-mirror-country='cn';或者尝试手动拉取镜像并重新 tag。
The "docker" driver should not be used with root privileges
- 原因:在 Linux 下使用 Docker 驱动时使用了 root 用户。
- 解决:将当前用户加入 docker 组 sudo usermod -aG docker $USER && newgrp docker,然后使用非 root 用户运行 minikube。
Dashboard 无法访问或超时
- 原因:代理未启动或网络问题。
- 解决:执行 minikube dashboard 重新开启代理;如果是在 WSL/远程环境,确保做了端口转发。
参考文档
https://minikube.kubernetes.ac.cn/docs/
https://kubernetes.io/zh-cn/docs/reference/kubectl/introduction/
lmcc-老马吃草的博客
评论已关闭