K3s 轻量级集群搭建与踩坑
K3s 轻量级集群搭建与踩坑
对很多中小规模团队来说,完整 Kubernetes 太重,K3s 是更现实的选择。本文记录我在政企内网环境搭建 K3s 集群并承载生产服务的完整过程。
为什么选 K3s
我们面临的环境是:内网隔离、机器资源有限(几台普通服务器)、没有专职 SRE。在这种条件下:
- 完整 K8s 的 etcd、控制面组件开销大、维护成本高
- K3s 把控制面打包成单个二进制,默认用 SQLite 存数据,资源占用极低
更重要的是,K3s 保留了标准 Kubernetes API,业务上的编排能力一点不少。
搭建过程
安装本身非常简单:
1 | # 主节点 |
worker 节点加入:
1 | curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 \ |
踩坑记录
坑一:内网无法访问 get.k3s.io
政企内网往往没有外网,安装脚本拉不下来。解法是离线安装:提前下载 K3s 二进制和 airgap 镜像包,内网里用 INSTALL_K3S_SKIP_DOWNLOAD=true 指定本地文件。
坑二:默认 Traefik 和业务 Ingress 冲突
K3s 默认自带 Traefik。如果团队习惯用 Nginx Ingress,需要安装时关掉 Traefik,避免两套 Ingress Controller 争抢。
坑三:镜像拉取失败
内网环境跑 docker pull 不通,需要配置私有镜像仓库(Harbor),并把业务镜像推到内网仓库,Pod 里用内网地址拉取。
坑四:cgroup 版本问题
老内核是 cgroup v1,新版容器运行时默认 v2,导致 Pod 资源限制不生效。需要在启动参数里显式指定 cgroup 驱动,保持一致。
小结
K3s 的上手成本比想象中低,但”能用”和”生产可用”之间隔着离线安装、Ingress 冲突、镜像源、cgroup 这些具体的坑。把这些坑踩平,K3s 是中小团队落地云原生性价比最高的选择之一。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 高晓庄 札记!
