🧪 第二章:Minikube------本地玩转 K8s 的神器
还在为搭建 K8s 集群掉头发?Minikube 来拯救你的发际线了!💇♂️
🤔 Minikube 是什么?
Minikube 是一个可以在你本地计算机上快速搭建单节点 K8s 集群 的工具。简单说就是:让你在家就能玩转 K8s,不用买一堆服务器 🏠💻
它特别适合开发人员在本地进行 K8s 相关的开发、测试和学习。通过 Minikube,你可以模拟一个完整的 K8s 集群环境------节点、Pod、Service、存储......该有的都有,一样不少 🎯
为啥要有 Minikube?
因为徒手搭 K8s 真的太!痛!苦!了! 😭
凡是手动搭建过 K8s 的同学都知道,那叫一个 "证书认证绕晕头,配置环节磨死人" 。出错率极高,稍有不慎就前功尽弃,分分钟让人怀疑人生 🤯
而 Minikube 就是为解决这个痛点而生的------一键搭建,开箱即用,妈妈再也不用担心我搭不好 K8s 了!现有的很多在线 K8s 实验环境,底层也是基于 Minikube 跑的。
Minikube 的亮点 ✨
- 基于 Go 语言开发------性能可靠,Go 出品必属精品(手动狗头)
- 单机快速搭建------消耗资源少,笔记本就能跑
- 快速启动------几分钟内拥有一个可用的 K8s 集群 ⏱️
- 支持三大平台------Windows、macOS、Linux 通吃
🏗️ Minikube 架构特点
Minikube 的架构有一个特别之处:Master 节点和 Worker 节点合二为一 ,整个集群通过宿主机的 kubectl 进行管理。
翻译成人话就是:"大脑"和"手脚"长在一起了,省地方! 🧠💪合体!
这样设计的好处是大大节省资源,毕竟咱们本地电脑也不是什么超级计算机对吧?
支持的功能清单 ✅
Minikube 虽然不是"完整版"的 K8s,但常用的功能基本都支持:
| 功能 | 支持情况 |
|---|---|
| DNS | ✅ |
| NodePorts | ✅ |
| ConfigMaps & Secrets | ✅ |
| Dashboard(仪表板) | ✅ |
| 容器运行时(Docker、rkt) | ✅ |
| CNI(容器网络接口) | ✅ |
| Ingress | ✅ |
| ......还有更多 | 🚀 |
💻 Windows 安装 Minikube(图文实战)
下面我们以 Windows 为例,一步步带你安装运行 Minikube!🏃♂️
前置步骤:安装 Docker
Minikube 需要一个容器运行时来跑 K8s 组件,Docker 是首选。
-
访问 Docker 官方下载地址:
-
下载
Docker for Windows Installer安装文件,双击完成安装。 -
安装完成后,启动 Docker Desktop,确保它正在运行(任务栏右下角能看到小鲸鱼🐳图标就对了)。
💡 小贴士:Docker 启动后可能需要等一小会儿,让它完全初始化。心急吃不了热豆腐哈 🫣
安装 Minikube
-
访问 Minikube 官方下载页面:
-
点击下载
minikube-installer.exe安装程序,然后运行安装。一路 Next 就完事了,没什么坑,安装程序还是很友好的 😊
-
配置环境变量(一般安装程序会自动配好,如果没配就手动加一下 Minikube 的安装路径到 PATH 里)
-
打开命令行(CMD 或 PowerShell),确保 Docker 已经启动,然后开始你的 Minikube 之旅 🚀
⌨️ Minikube 常用命令大全
下面这些命令是以后高频使用的,建议收藏 ⭐
1️⃣ 查看版本
bash
minikube version
执行效果:
sh
C:\Users\DELL>minikube version
W0323 17:19:55.916748 1800 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
minikube version: v1.32.0
commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d
这里有个 Warning 不用慌,是因为 Docker 上下文配置的小问题,不影响使用,忽略它就好 👻
2️⃣ 启动 Minikube 集群 🚀
bash
minikube start
这是最重要的命令,没有之一!
执行过程:
sh
C:\Users\DELL>minikube start
W0323 17:24:17.006260 23440 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
* Microsoft Windows 11 Home China 10.0.22631.3296 Build 22631.3296 上的 minikube v1.32.0
* 根据现有的配置文件使用 docker 驱动程序
* 正在集群 minikube 中启动控制平面节点 minikube
* 正在拉取基础镜像 ...
> index.docker.io/kicbase/sta...: 453.90 MiB / 453.90 MiB 100.00% 2.61 Mi
! minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.42, but successfully downloaded docker.io/kicbase/stable:v0.0.42 as a fallback image
* Creating docker container (CPUs=2, Memory=4000MB) ...
* 正在 Docker 24.0.7 中准备 Kubernetes v1.28.3...
- 正在生成证书和密钥...
- 正在启动控制平面...
- 配置 RBAC 规则 ...
* 配置 bridge CNI (Container Networking Interface) ...
* 正在验证 Kubernetes 组件...
- 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
* 启用插件: storage-provisioner, default-storageclass
* 完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间
看到 "完成!" 就说明启动成功了,撒花!🎉🎊
⚠️ 注意:首次启动会下载约 450MB 的镜像,网速慢的话可以去泡杯咖啡☕,耐心等待。
3️⃣ 查看集群状态 👀
bash
minikube status
想知道集群有没有在跑?这个命令告诉你答案:
sh
C:\Users\DELL>minikube status
W0323 17:30:34.612462 4616 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
全是 Running 就代表一切正常,可以放心使用 👍
4️⃣ 获取集群 IP 地址
bash
minikube ip
想知道你的 K8s 集群住在哪个 IP 上?用这个命令:
sh
C:\Users\DELL>minikube ip
W0323 17:31:38.368205 2484 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
192.168.49.2
这个 IP 是你访问集群内部服务的入口,记小本本上 📝
5️⃣ SSH 进入集群内部 🔐
bash
minikube ssh
想进到集群里面"实地考察"一下?这个命令带你进入 Minikube 节点内部:
sh
C:\Users\DELL>minikube ssh
W0323 17:34:12.883919 24608 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
docker@minikube:~$
进去之后可以执行 docker ps 看看集群里跑了哪些容器:
sh
docker@minikube:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1407610b3a2f 6e38f40d628d "/storage-provisioner" 6 minutes ago Up 6 minutes k8s_storage-provisioner_storage-provisioner_kube-system_d4ee5dfb-c7e0-441c-baa2-12474b5ad5c4_1
f6403b614117 ead0a4a53df8 "/coredns -conf /etc..." 7 minutes ago Up 7 minutes k8s_coredns_coredns-5dd5756b68-w9wgv_kube-system_0a9ad253-2304-447e-8ab3-2f06da88a721_0
606d3bac1dbb registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_coredns-5dd5756b68-w9wgv_kube-system_0a9ad253-2304-447e-8ab3-2f06da88a721_0
4cdfd56f9d60 bfc896cf80fb "/usr/local/bin/kube..." 7 minutes ago Up 7 minutes k8s_kube-proxy_kube-proxy-cdq9d_kube-system_2f2aca3c-4d8c-45c1-8efc-b7d0d4938025_0
821e8c045d0c registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_kube-proxy-cdq9d_kube-system_2f2aca3c-4d8c-45c1-8efc-b7d0d4938025_0
c7f05331626d registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_storage-provisioner_kube-system_d4ee5dfb-c7e0-441c-baa2-12474b5ad5c4_0
ae5966109c8a 6d1b4fd1b182 "kube-scheduler --au..." 7 minutes ago Up 7 minutes k8s_kube-scheduler_kube-scheduler-minikube_kube-system_75ac196d3709dde303d8a81c035c2c28_0
49f497991344 10baa1ca1706 "kube-controller-man..." 7 minutes ago Up 7 minutes k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_7da72fc2e2cfb27aacf6cffd1c72da00_0
51420b3b4a70 73deb9a3f702 "etcd --advertise-cl..." 7 minutes ago Up 7 minutes k8s_etcd_etcd-minikube_kube-system_9aac5b5c8815def09a2ef9e37b89da55_0
982fdca2d503 537434729123 "kube-apiserver --ad..." 7 minutes ago Up 7 minutes k8s_kube-apiserver_kube-apiserver-minikube_kube-system_55b4bbe24dac3803a7379f9ae169d6ba_0
7f2976f13746 registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_kube-scheduler-minikube_kube-system_75ac196d3709dde303d8a81c035c2c28_0
b2b10a4815fa registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_kube-controller-manager-minikube_kube-system_7da72fc2e2cfb27aacf6cffd1c72da00_0
eff72a86aa15 registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_kube-apiserver-minikube_kube-system_55b4bbe24dac3803a7379f9ae169d6ba_0
7236c52d6a38 registry.k8s.io/pause:3.9 "/pause" 7 minutes ago Up 7 minutes k8s_POD_etcd-minikube_kube-system_9aac5b5c8815def09a2ef9e37b89da55_0
可以看到 kube-apiserver、etcd、kube-scheduler 等核心组件都在里面跑着------麻雀虽小,五脏俱全 🐦
💡 退出 SSH:输入
exit回车即可。
6️⃣ 停止 Minikube 🛑
bash
minikube stop
暂时不用了?这个命令帮你优雅关机,下次再 start 就能快速恢复,不用重新下载镜像:
sh
C:\Users\DELL>minikube stop
省时间又省流量,良心设计!👏
7️⃣ 启动 Dashboard(可视化仪表板)📊
bash
minikube dashboard
这是最炫酷的功能------打开一个 Web 界面,让你用图形化的方式管理集群!
第一次执行:
sh
C:\Users\DELL>minikube dashboard
W0323 17:40:48.423278 11632 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
* 正在开启 dashboard ...
- 正在使用镜像 docker.io/kubernetesui/dashboard:v2.7.0
- 正在使用镜像 docker.io/kubernetesui/metrics-scraper:v1.0.8
* 某些 dashboard 功能需要启用 metrics-server 插件。为了启用所有功能,请运行以下命令:
minikube addons enable metrics-server
* 正在验证 dashboard 运行情况 ...
* 正在启动代理...
* 正在验证 proxy 运行状况 ...
^C
如果中途按了 Ctrl+C 取消了,重新执行一次即可:
sh
C:\Users\DELL>minikube dashboard
W0323 17:41:42.866075 25216 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\DELL\.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
* 正在验证 dashboard 运行情况 ...
* 正在启动代理...
* 正在验证 proxy 运行状况 ...
* 正在使用默认浏览器打开 http://127.0.0.1:59903/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ...
命令执行后,浏览器会自动打开一个界面 ,你就可以在上面看到 Pod、Service、Deployment 等各种资源的状态,贼直观 👀
⚠️ 如果提示启用 metrics-server 以获得完整功能,可以执行:
bashminikube addons enable metrics-server
📋 常用命令速查表
| 命令 | 作用 | 使用频率 |
|---|---|---|
minikube version |
查看版本号 | ⭐⭐ |
minikube start |
启动集群(最重要的!) | ⭐⭐⭐⭐⭐ |
minikube status |
查看集群运行状态 | ⭐⭐⭐⭐ |
minikube ip |
获取集群 IP | ⭐⭐⭐ |
minikube ssh |
进入集群内部 | ⭐⭐⭐ |
minikube stop |
停止集群 | ⭐⭐⭐ |
minikube dashboard |
打开可视化面板 | ⭐⭐⭐⭐ |
minikube delete |
删除整个集群(慎用!) | ⭐ |
minikube addons list |
查看可用插件 | ⭐⭐ |
🎯 本章小结
到这里,你已经成功在本地拥有了一个属于自己的 K8s 集群!🎉
这一章你学会了:
- ✅ Minikube 是什么、为什么需要它
- ✅ Minikube 的架构特点和支持的功能
- ✅ 在 Windows 上安装 Docker + Minikube
- ✅ 常用命令:start、status、ip、ssh、stop、dashboard
- ✅ 如何进入集群内部"实地考察"
下一章,我们将正式开始在 Minikube 上部署第一个应用!K8s 的大门已经为你打开,冲鸭! 🦆💨
有问题随时翻回来看,或者在评论区留言交流~ 下篇见!👋