一、Minikube 概述
1.1 什么是 Minikube
Minikube 是一个 Kubernetes SIG 项目,是一个用于在本地环境中运行单节点 Kubernetes 集群的工具。它通过虚拟化技术(如 VirtualBox 或 Hyperkit)或在 Linux 上直接使用 Docker 容器来部署,是进行本地开发和测试的理想选择。
官方资源:
- 官方文档:https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/
- 项目官网:https://minikube.sigs.k8s.io/docs/
- GitHub 仓库:https://github.com/kubernetes/minikube
1.2 Minikube 的特点
优点:
- 对初学者友好:安装和使用非常简单,是学习 Kubernetes 的绝佳起点。
- 功能丰富:内置超过 30 个插件(Add-ons),如 Dashboard、Ingress、Metrics Server 等,可一键启用,便于模拟生产环境功能。
- 高度兼容:100% 符合 Kubernetes 标准,是准备 CKA(Certified Kubernetes Administrator)等认证考试的推荐工具。
缺点与局限:
- 资源占用较高:官方推荐至少 2GB 内存和 2 个 CPU 核心,实际运行中内存占用可达 500MB 以上。
- 启动速度较慢:尤其在虚拟机驱动下,冷启动可能需要 2-5 分钟。
- 与生产环境的差异:其网络、存储等实现与真实生产环境(如特定的 CNI、存储类)可能存在差异,可能导致"本地通过,上线失败"的问题。
- 多节点支持有限:多节点功能为实验性质,配置和资源开销相对复杂。
1.3 常用操作示例
运行临时 Pod(退出后自动删除):
标准写法(推荐):
1 | kubectl run --rm -it --image busybox dns-test --restart=Never /bin/sh |
国内用户拉取加速:若拉取官方镜像失败,可替换为 DaoCloud 镜像加速地址:
1kubectl run --rm -it --image m.daocloud.io/docker.io/library/busybox dns-test --restart=Never /bin/sh
-i表示交互式输入-t分配一个伪终端
运行 Pod 并保持运行:
1 | kubectl run demo --image=busybox -it |
第二次进入已运行的 Pod:
1 | kubectl attach demo -it |
二、K3s 概述
2.1 什么是 K3s
K3s 是由 Rancher Labs(现为 SUSE 旗下)开发并开源的高度轻量级 Kubernetes 发行版。其核心理念是提供一个完全兼容 Kubernetes API 但资源消耗极低、安装极其简便的发行版。K3s 于 2020 年被 CNCF 接纳为 Sandbox 项目。
核心目标:
删除所有非必要功能(如非默认的 Alpha 功能、旧版特性),保留标准 Kubernetes 的核心能力。
K3s 不是 Kubernetes 的替代品,而是为特定场景(如边缘计算、IoT)和资源受限环境设计的轻量级实现。对于应用开发人员来说,所有 kubectl 命令与标准 Kubernetes 完全一致,学习成本几乎为零。
官方 GitHub: https://github.com/k3s-io/k3s
2.2 K3s 轻量化设计
传统 Kubernetes 需要多个组件协同工作:
- kube-apiserver
- kube-controller-manager
- kube-scheduler
- etcd
- cloud-controller
而 K3s 将多个组件整合到单个小于 100MB 的二进制文件 k3s 中,即可启动整个控制平面。
2.3 K3s 的核心优化
(1)默认使用 SQLite 替代 etcd
| 对比项 | etcd | SQLite |
|---|---|---|
| 优点 | 高可靠、强一致性 | 运维简单、资源占用低 |
| 缺点 | 运维复杂、资源占用高 | 适合单节点/小规模集群 |
K3s 默认使用 SQLite 作为存储后端,极大降低了资源消耗。对于单节点或小规模集群完全够用。如需高可用,也支持 etcd、MySQL、PostgreSQL。
- 生产环境提醒:SQLite 后端仅适用于单节点或非关键环境,多节点 HA 必须切换到 etcd/MySQL/PostgreSQL,避免数据不一致。
(2)内置 Container Runtime
K3s 默认集成 containerd,无需额外安装 Docker 或其他运行时。
(3)内置网络组件
K3s 默认集成了以下组件:
- CoreDNS:提供服务发现。
- Flannel:作为默认 CNI 网络插件。
- ServiceLB (Klipper):提供基础的 LoadBalancer 服务。
- Local Storage:提供本地存储能力。
- Traefik:默认的 Ingress Controller,用于管理外部访问流量。这是与标准 Kubernetes 的一个重要区别点,原文中未提及。
安装后即可直接使用,无需额外安装 MetalLB、NFS Provisioner 等插件。
(4)资源占用极低
- K3s 可在 512MB RAM 的设备上运行。
- 标准 Kubernetes 通常推荐 2GB+ 甚至更高。
这使得 K3s 特别适合树莓派、ARM 设备、IoT 设备、边缘服务器等场景。
2.4 K3s 安装与卸载
安装
一条命令即可在 Linux 系统上完成安装,并自动配置为 systemd 服务:
1 | curl -sfL https://get.k3s.io | sh - |
国内用户可使用镜像加速:
1 | curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - |
生产环境建议指定版本,避免意外升级:
1 | curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.31.x+k3s1 sh - |
验证安装:
1 | kubectl get nodes |
输出示例:
1 | NAME STATUS ROLES |
卸载
K3s 安装后会在系统中注册服务并生成文件,必须使用专用脚本彻底卸载:
卸载 Server 节点:
1 | /usr/local/bin/k3s-uninstall.sh |
卸载 Agent 节点:
1 | /usr/local/bin/k3s-agent-uninstall.sh |
直接删除二进制文件无法清理干净,可能导致系统残留服务或配置。
三、K3s vs Kubernetes vs Minikube 对比
| 项目 | Kubernetes (标准) | K3s | Minikube |
|---|---|---|---|
| 资源占用 | 高(2GB+) | 极低(512MB) | 较高(2GB+) |
| 部署复杂度 | 高 | 极低 | 低 |
| 学习成本 | 中 | 低 | 低 |
| API 兼容 | 标准 | 标准(CNCF 认证) | 标准 |
| 边缘计算/IoT | 一般 | 优秀 | 不适合 |
| 企业大规模集群 | 优秀 | 良好 | 不适合 |
| 本地开发 | 一般 | 良好(接近生产) | 优秀(纯开发测试) |
| 启动速度 | 慢 | 极快(~35秒) | 较慢(2-5分钟) |
关于"本地开发"的补充说明:纯本地开发场景下,Minikube 启动更快、隔离性更好、不污染宿主机;K3s 更适合"本地模拟生产"或"边缘开发"。
选择建议
选择 Kubernetes(标准版):
- 大规模生产环境
- 金融级系统
- 超大型微服务平台
- 多集群管理
选择 K3s:
- 中小企业
- SaaS 创业团队
- AI Agent 平台(如 Dify、MaxKB、OpenWebUI、Ragflow、FastGPT、AnythingLLM)
- IoT 项目
- 边缘计算
- 资源受限的测试/开发环境
选择 Minikube:
- Kubernetes 初学者学习
- CKA/CKAD 认证备考
- 需要丰富的内置插件支持
- 纯本地开发测试
四、K3s 高可用架构
K3s 支持 Embedded etcd HA 模式,官方推荐 3 个 Server 节点构成对等的控制平面:
1 | # 3 个 Server 节点通过 Embedded etcd 组成对等高可用控制平面 |
- 3 个 Master 节点之间通过 etcd 选举实现领导者选举,任意单点故障不影响集群运行。
- Worker 节点同时连接所有 Master 的 apiserver,实现负载均衡和故障自动切换。
五、AI 平台部署注意事项
虽然 K3s 适合部署 Dify、MaxKB 等 AI 平台,但需注意:
- GPU 支持:K3s 默认不包含 NVIDIA Device Plugin,如需 GPU 加速,需额外安装
nvidia-device-pluginDaemonSet。 - 存储规划:K3s 内置的 Local Path Provisioner 默认将持久化数据存储在
/var/lib/rancher/k3s/storage/,适合开发测试环境。生产环境建议对接 NFS、Ceph 或云厂商 CSI 驱动,并创建独立的 StorageClass,以避免模型文件、向量数据库与系统盘争抢 IO 资源,影响集群稳定性。
六、K3s 的不足
- 超大规模集群支持弱于原生 Kubernetes:达到数千节点级别时,仍建议使用标准 Kubernetes。
- 部分企业功能生态偏少:如 OpenShift、Tanzu、AKS 企业扩展等更倾向标准 Kubernetes。
- 社区资料不如 Kubernetes 丰富:但由于 API 一致,大部分方案可复用。
七、补充:本地 K8s 工具生态——Kind
在本地 Kubernetes 工具中,Kind(Kubernetes in Docker) 也是一个主流选择,特别适合 CI/CD 流水线:
| 工具 | 启动速度 | 资源占用 | 适用场景 |
|---|---|---|---|
| Minikube | 慢(2-5min) | 高 | 学习、CKA备考 |
| Kind | 极快(~45s) | 低 | CI/CD测试、多节点测试 |
| K3s | 极快(~35s) | 最低 | 边缘计算、轻量生产、AI部署 |
选择时可根据实际需求:若为自动化测试,Kind 因其快速创建和销毁集群的能力,是最佳选择;若为资源受限的生产或边缘场景,K3s 更合适;若为学习和认证备考,Minikube 最为推荐。
AI
https://mp.weixin.qq.com/s/KyXBRjUk9IZJkeqVi8sRiw
评论已关闭