Kubernetes 在 CentOS 上的安装最佳时机
一、选择操作系统与内核的时机
- 新建集群应优先选用CentOS Stream 8/9或兼容的Rocky/AlmaLinux 8/9,可更好匹配新版 Kubernetes 对内核与网络栈的要求。
- CentOS 7.9已于2024-06-30停止维护,内核多为3.10;若必须沿用,建议内核升级至≥4.19(推荐 6.5+),否则更稳妥的做法是迁移至 Stream 8/9 或 Rocky/AlmaLinux 8/9。
- 版本上限建议:CentOS 7.9 控制在≤ v1.27.x;CentOS Stream 8/9 与 Rocky/AlmaLinux 8/9 更适合v1.28–v1.31,具体以所用网络插件与容器运行时的兼容矩阵为准。
二、选择 Kubernetes 小版本的时机
- 生产环境优先选择稳定小版本(X.Y.Z),并统一集群版本,避免混用;例如选择v1.26.x这类社区验证充分的稳定分支。
- 结合上节的 OS 矩阵:
- CentOS 7.9:≤ v1.27.x
- CentOS Stream 8/9、Rocky/AlmaLinux 8/9:v1.28–v1.31
- 规划升级时遵循逐级升级路径(如 1.26→1.27→1.28),避免跨大版本跳跃,以降低风险。
三、资源与网络就绪的时机
- 节点规模与规格:至少准备3 台(建议1 个 Master + 2 个 Node),每台≥2 核 CPU、2GB 内存、30GB 磁盘,并保证节点间网络互通与可访问外网(便于拉取镜像)。
- 基础系统基线:
- 设置唯一主机名并在**/etc/hosts**或 DNS 完成解析;
- 启用chrony/ntp做时间同步;
- 配置内核参数:开启桥接流量进入 iptables 与转发(net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1);
- 禁用 Swap;
- 防火墙按等保/公司策略精细化放行端口(如6443、10250、2379–2380、10251、10252、30000–32767)。
四、容器运行时与 kubelet 配置的时机
- 容器运行时:生产优先containerd(自v1.21起 kubelet 与 Docker 解耦,优先使用 containerd;如使用 Docker,需确保与 kubelet 的cgroup 驱动一致)。
- containerd 启用 SystemdCgroup:
- 加载内核模块:overlay、br_netfilter;
- 生成默认配置并启用 SystemdCgroup:
- containerd config default | tee /etc/containerd/config.toml
- 在 [plugins.“io.containerd.grpc.v1.cri”.containerd.runtimes.runc.options] 下设置 SystemdCgroup = true
- systemctl restart containerd
- kubeadm/kubelet/kubectl:添加 YUM 源,安装指定版本的 kubeadm、kubelet、kubectl,并启用 kubelet 开机自启(初始化集群前保持就绪等待)。
五、快速决策清单
- 需要新建生产集群:现在即可在CentOS Stream 8/9 或 Rocky/AlmaLinux 8/9上部署v1.28–v1.31的稳定小版本。
- 仍在用 CentOS 7.9:短期内可在升级内核至 ≥4.19(推荐 6.5+)的前提下维持≤ v1.27.x;更优解是规划迁移至 Stream 8/9 或 Rocky/AlmaLinux 8/9,再上v1.28+。
- 已有集群升级:按逐级升级路径执行,并提前核对CNI 插件/容器运行时的兼容矩阵与变更窗口。