本地开发选 k3s 还是 minikube,取决于你是更在意资源占用,还是更在意跟官方标准 Kubernetes 的行为一致性。
先说结论:资源紧张或追求启动速度选 k3s,需要测试特定 K8s 特性或驱动兼容性选 minikube。
- 适合:k3s 适合低配机器、CI 环境及边缘模拟;minikube 适合需要完整 K8s 特性验证的场景。
- 重点看:两者在存储类(StorageClass)和网络插件(CNI)的默认配置差异,这直接影响应用部署表现。
- 别忽略:minikube 通常运行在虚拟机中,而 k3s 可直接运行在主机上,网络访问方式有所不同。
命令速用版
如果你已经决定好方向,可以直接使用以下命令快速搭建环境。
k3s 安装与启动:
curl -sfL https://get.k3s.io | sh -
sudo k3s kubectl get nodesminikube 安装与启动:
minikube start `--driver`=docker
kubectl get nodes为什么会这样
这两个工具的设计目标不同,导致它们在本地开发体验上有明显区别。
k3s 是一个经过裁剪的 Kubernetes 发行版,它将多个组件打包成一个二进制文件,默认使用 SQLite 替代 etcd(单节点模式下),并移除了部分非必要的云驱动代码。这种设计让它占用的内存和 CPU 更少,启动速度更快。
minikube 是一个本地 Kubernetes 工具,它的核心目标是在本地运行一个标准的 Kubernetes 集群。它通常会在你的机器上启动一个虚拟机(或使用 Docker 容器模拟节点),然后在这个隔离环境中安装标准的 Kubernetes 组件。这意味着它的行为更接近生产环境的标准集群,但开销相对较大。
公开资料中没有看到可靠的量化数据表明具体节省多少资源,但架构上的精简决定了 k3s 在轻量级场景下的优势。
分步处理
以下是具体的选型和部署步骤,帮助你根据实际需求做决定。
1. 评估机器资源
如果你的开发机内存小于 8GB,或者你需要同时运行多个集群实例,建议优先考虑 k3s。如果资源充足且需要测试特定的 Kubernetes 版本特性,minikube 的版本管理更方便。
2. 安装工具
k3s 通常直接安装在主机系统上,需要注意权限管理。minikube 需要预先安装驱动(如 Docker、VirtualBox 或 Hyperkit)。
3. 配置 kubeconfig
k3s 安装后会自动配置 kubeconfig 到/etc/rancher/k3s/k3s.yaml,通常需要导出环境变量:
export KUBECONFIG=/etc/rancher/k3s/k3s.yamlminikube 会自动更新默认的~/.kube/config文件,通常无需额外配置即可使用kubectl。
4. 部署测试应用
尝试部署一个简单的 Nginx 服务,观察调度速度和 Pod 启动状态。如果在 minikube 上,可能需要开启 ingress 插件才能对外暴露服务:
minikube addons enable ingressk3s 默认内置了 Traefik 作为 Ingress 控制器,通常无需额外操作即可使用 Ingress 资源。
怎么验证是否生效
部署完成后,通过以下命令确认集群状态是否正常。
1. 检查节点状态
kubectl get nodes确保状态显示为Ready。
2. 检查系统组件
kubectl get pods -n kube-system确认核心组件(如 CoreDNS、Network Plugin)处于
Running状态。3. 验证网络连通性
创建一个临时 Pod 测试 DNS 解析和外网访问:
kubectl run -it `--rm` debug `--image`=busybox `--restart`=Never -- nslookup kubernetes.default常见坑
- 存储类差异:k3s 默认提供
local-path存储类,而 minikube 可能需要手动启用storage-provisioner插件,否则 PVC 会一直 Pending。 - 网络访问:minikube 运行在 VM 中时,宿主机访问服务可能需要通过
minikube ip或minikube service命令获取地址,而 k3s 直接使用宿主机网络。 - 组件版本:k3s 的 Kubernetes 版本跟随其发布节奏,可能略滞后于官方最新稳定版;minikube 可以灵活指定任意 Kubernetes 版本启动。
- 权限问题:k3s 直接运行在主机上,注意不要与主机上已有的容器运行时或端口冲突。
参考来源
- k3s 官方文档:Introduction to k3s,URL: https://docs.k3s.io/
- minikube 官方文档:What is Minikube,URL: https://minikube.sigs.k8s.io/docs/