一、Minikube 概述

1.1 什么是 Minikube

Minikube 是一个 Kubernetes SIG 项目,是一个用于在本地环境中运行单节点 Kubernetes 集群的工具。它通过虚拟化技术(如 VirtualBox 或 Hyperkit)或在 Linux 上直接使用 Docker 容器来部署,是进行本地开发和测试的理想选择。

官方资源:

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 镜像加速地址:

1
kubectl 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

对比项etcdSQLite
优点高可靠、强一致性运维简单、资源占用低
缺点运维复杂、资源占用高适合单节点/小规模集群

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
2
NAME       STATUS   ROLES
server01 Ready control-plane

卸载

K3s 安装后会在系统中注册服务并生成文件,必须使用专用脚本彻底卸载:

卸载 Server 节点

1
/usr/local/bin/k3s-uninstall.sh

卸载 Agent 节点

1
/usr/local/bin/k3s-agent-uninstall.sh

直接删除二进制文件无法清理干净,可能导致系统残留服务或配置。

三、K3s vs Kubernetes vs Minikube 对比

项目Kubernetes (标准)K3sMinikube
资源占用高(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
2
3
4
        # 3 个 Server 节点通过 Embedded etcd 组成对等高可用控制平面
master01 ←→ master02 ←→ master03
↓ ↓ ↓
worker01 worker02 worker03
  • 3 个 Master 节点之间通过 etcd 选举实现领导者选举,任意单点故障不影响集群运行。
  • Worker 节点同时连接所有 Master 的 apiserver,实现负载均衡和故障自动切换。

五、AI 平台部署注意事项

虽然 K3s 适合部署 Dify、MaxKB 等 AI 平台,但需注意:

  • GPU 支持:K3s 默认不包含 NVIDIA Device Plugin,如需 GPU 加速,需额外安装 nvidia-device-plugin DaemonSet。
  • 存储规划:K3s 内置的 Local Path Provisioner 默认将持久化数据存储在 /var/lib/rancher/k3s/storage/,适合开发测试环境。生产环境建议对接 NFS、Ceph 或云厂商 CSI 驱动,并创建独立的 StorageClass,以避免模型文件、向量数据库与系统盘争抢 IO 资源,影响集群稳定性。

六、K3s 的不足

  1. 超大规模集群支持弱于原生 Kubernetes:达到数千节点级别时,仍建议使用标准 Kubernetes。
  2. 部分企业功能生态偏少:如 OpenShift、Tanzu、AKS 企业扩展等更倾向标准 Kubernetes。
  3. 社区资料不如 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