CentOS 上选择 Kubernetes 版本的实用指南
一 选择原则
- 以操作系统生命周期为前提:CentOS 7已于2024-06-30 EOL,默认内核3.10;在不升级内核的情况下,建议将 K8s 控制在≤ v1.27.x;若必须上更高版本,至少升级内核至≥ 4.19(推荐 6.5+),否则更稳妥的做法是迁移到CentOS Stream 8/9或Rocky/AlmaLinux 8/9。新建集群优先选用CentOS Stream 8/9或兼容的 RHEL 系发行版,以获得较新的内核与软件栈支持。生产上建议选择当前稳定大版本线中较新的补丁版本,兼顾安全修复与稳定性。
二 推荐版本矩阵
| 操作系统 |
建议 Kubernetes 版本 |
说明 |
| CentOS 7.9 |
≤ v1.27.x |
默认内核3.10;若升级内核至**≥ 4.19(推荐 6.5+)可缓解部分问题,但v1.28+**风险显著上升;不建议长期运行在 1.28+。 |
| CentOS Stream 8 |
v1.28–v1.31 |
内核与依赖较新,适配新版特性;具体上限以所用网络插件与容器运行时兼容矩阵为准。 |
| CentOS Stream 9 |
v1.28–v1.31 |
软件包更新,适合需要较新内核与特性的场景;同样以插件/运行时兼容为准。 |
| Rocky/AlmaLinux 8/9 |
v1.28–v1.31 |
与 RHEL 兼容,生产友好;优先选择对应系列的稳定/LTS 内核。 |
说明:新版 K8s 对内核与网络栈要求更高;在CentOS 7.9上实测v1.31出现明显网络性能退化,升级内核或迁移系统后可恢复;因此将 CentOS 7 的上限控制在v1.27.x更稳妥。较新的CentOS Stream 8/9与Rocky/AlmaLinux 8/9更适合v1.28+。
三 运行时与网络插件匹配
- 容器运行时:生产通用优先Containerd;如使用Docker,需确保与所选 K8s 版本匹配并通过cri-dockerd适配。自v1.24起移除内置 Dockershim,默认使用 CRI(containerd/CRI-O)。
- 网络插件:选择与 Kubernetes 版本匹配的Calico/Flannel/Cilium版本;部署前务必核对对应版本的兼容性与部署清单(不同小版本间可能存在 API/字段差异)。
- 基础环境要点:禁用Swap、放行6443/10250等关键端口;按 K8s 要求开启内核参数与模块(如br_netfilter、ip_forward等);生产建议启用IPVS模式(kube-proxy)。
四 升级与迁移路径
- 在CentOS 7.9运行高版本 K8s 遇到网络/性能问题时:先升级内核(如启用 ELRepo 安装kernel-ml 6.x或kernel-lt 5.4),重启并验证;多数性能问题可随之解决。
- 若需长期稳定与更广的版本支持:规划迁移至CentOS Stream 8/9或Rocky/AlmaLinux 8/9,在新系统上按目标 Kubernetes 版本重建集群,并恢复应用与数据(配合备份/恢复与灰度策略)。
五 快速决策建议
- 已在CentOS 7.9且短期内无法升级系统:选择v1.27.x,并尽快规划内核升级或系统迁移。
- 新建集群:优先CentOS Stream 8/9或Rocky/AlmaLinux 8/9,选择v1.28–v1.31中较新的补丁版本,结合容器运行时与网络插件的官方兼容矩阵确定最终小版本。
- 需要新特性/性能优化:在确保内核与运行时满足要求的前提下,选择当前稳定线的最新小版本,并充分回归测试关键业务。