总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《K8S 集群运维指南》
摘要:本文详细介绍了基于 Kubernetes v1.36.4 的高可用集群部署全过程,涵盖组件版本选型、环境初始化、容器运行时安装、二进制工具部署及网络插件配置等核心环节。文章首先梳理了 Kubernetes 与 containerd、runc、CNI、crictl、Calico 等组件的版本对应关系,并给出推荐版本组合;随后说明了 CGroup、kube-proxy 转发模式等关键注意事项。部署部分按 control-plane 与 worker 节点分别规划,逐步完成系统基础配置、内核模块加载、依赖包安装、containerd 与 runc 部署、CNI 插件及 crictl 工具安装,最后部署二进制工具、Calico 插件与 kubelet-csr-approver 控制器,并给出集群检查与测试建议。全文以实操为导向,适合运维人员参考落地。
一、部署说明
1.1、版本说明
| 组件 | 版本 |
|---|---|
| Kubernetes | v1.36.4 |
| containerd | v2.4.1 |
| runc | v1.5.2 |
| CNI plugins | v1.9.1 |
| crictl | v1.36.0 |
| Calico | v3.32.2 |
| kubelet.service | v0.16.2 |
| 10-kubeadm.conf | v0.16.2 |
| kubelet-csr-approver | v1.2.15 |
1、Kubernetes 与 containerd 版本对应关系
| Kubernetes Version | containerd Version |
|---|---|
| 1.32 | 2.1.0+, 2.0.1+, 1.7.24+, 1.6.36+ |
| 1.33 | 2.1.0+, 2.0.4+, 1.7.24+, 1.6.36+ |
| 1.34 | 2.1.3+, 2.0.6+, 1.7.28+, 1.6.39+ |
| 1.35 | 2.2.0+, 2.1.5+, 1.7.28+ |
| 1.36 | 2.3.0+, 2.2.0+ |
总结:根据当前要部署的 Kubernetes 版本 v1.36.4,结合上表版本对应关系,选择 containerd v2.4.1 版本。
2、containerd 与 runc 版本对应关系
官方明确建议:runc 版本应等于或高于containerd 发布时 script/setup/runc-version 文件 中锁定的版本。
总结:根据当前要部署的 containerd 版本 v2.4.1,如上图,选择 高于 v1.5.1的版本,即runc v1.5.2 版本。
3、Kubernetes 与 CNI 版本对应关系
官方文档明确要求:CNI 插件必须兼容 CNI 规范 v0.4.0 或更高版本,并推荐使用 兼容 v1.0.0 规范 的插件。
总结:根据当前要部署的 K8s 版本 v1.36.4,结合上图版本对应关系,选择 CNI v1.9.1 版本。
4、Kubernetes 与 crictl 版本对应关系
官方文档明确建议:下载与你Kubernetes 版本相对应的crictl版本。
总结:根据当前要部署的 K8S 版本 v1.36.4,结合上图版本对应关系,选择 crictl v1.36.0 版本。
5、Kubernetes 与 calico 版本对应关系
总结:根据 Calico 与 Kubernetes 版本对应关系,结合上图,选择 Calico v3.32.2 版本。
1.2、注意事项
1、根据 Kubernetes 官方文档,cgroup 版本与 Kubernetes 版本的对应关系如下表所示:
| Kubernetes 版本 | cgroup v1 支持状态 | cgroup v2 支持状态 | 推荐配置 | 官方参考 |
|---|---|---|---|---|
< v1.25 | 完全支持(默认) | Alpha/Beta 阶段 | cgroup v1 | cgroup v2 GA 博客 (v1.25) |
v1.25 – v1.30 | 支持(默认) | Stable (GA) | 推荐 cgroup v2 | 关于 cgroup v2 |
v1.31 – v1.34 | 维护模式 | Stable (GA) | 推荐 cgroup v2 | 对 cgroup v1 的支持转为维护模式 |
>= v1.35 | 不再支持(已移除) | 强制要求 | 必须使用 cgroup v2 | Kubernetes v1.35 抢先一览 |
2、Kubernetes 版本与 kube-proxy 转发模式对照表
| Kubernetes版本 | 推荐模式 | 模式状态 | 说明 |
|---|---|---|---|
< v1.25 | iptables | 默认 | 唯一稳定选择,ipvs 尚未 GA,nftables 尚未引入 |
v1.25 ~ v1.32 | ipvs/iptables | ipvs GA/iptables 默认 | ipvs 性能更优,iptables 仍可用 |
v1.33 ~ v1.34 | nftables/ipvs | nftables GA/ipvs兼容 | nftables进入稳定,ipvs仍可兼容使用 |
≥ v1.35 | nftables | ipvs已弃用 | ipvs已弃用,官方强烈推荐迁移至nftables |
3、kube-proxy 转发模式与内核版本对照表
| 转发模式 | 最低内核版本 | 推荐内核版本 | 核心依赖模块 | 适用场景 |
|---|---|---|---|---|
iptables | 无硬性最低版本,建议>=3.13 | 4.x+ | netfilter、conntrack | 小规模集群 |
ipvs | >=4.1 | >=5.9 | ip_vs相关内核模块 | 中大规模集群 |
nftables | >=5.13(正式支持) | >=6.6 LTS(生产推荐) | nft命令行工具>=1.0.1 | 大规模集群 |
补充说明:
1、内核< 3.13且iptables <= 1.6.2时,NAT后源端口随机性不足,可能导致1s延迟。iptables模式是Kubernetes的默认模式,兼容性最广,但在大规模Service场景下性能随规则数线性下降。
2、内核 < 5.9时不推荐使用IPVS模式。内核 4.1+时kube-proxy会将conn_reuse_mode设为0(解决低吞吐问题),但可能导致端口复用下 RealServer无法移除;内核 < 4.1时保持默认值 1,高并发下存在1秒延时。Kubernetes v1.35起IPVS模式已标记为弃用,建议新内核用户迁移至nftables模式。
3、nftables模式要求:操作系统内核版本>= 5.13;nft版本>=v1.0.1。
3、containerd v2.3.5版本
满足:glibc >= 2.35
1.3、证书详解
1、Kubernetes 集群中的证书体系是保障组件间安全通信的基石,主要由 kubeadm 统一签发与管理。下面按证书类型逐一说明其生成方式、存放路径、有效期及轮换策略。
2、证书查看与验证命令
3、证书轮换注意事项
1、所有证书续期操作需在 control-plane 节点上执行,且需具备 root 权限。
2、证书续期后,需重启对应组件(kube-apiserver、etcd、kube-controller-manager、kube-scheduler)使新证书生效。
3、建议在证书到期前 30 天进行续期,避免因证书过期导致集群不可用。
4、生产环境建议部署 kubelet-csr-approver,实现 kubelet 证书的全自动轮换,减少人工运维成本。
5、根 CA 轮换风险较高,需制定详细的迁移方案,并在维护窗口内执行。