温馨提示×

centos k8s部署如何升级

小樊
47
2026-08-04 20:49:39
栏目: 智能运维

下面按常见场景给你一个**CentOS 上升级 Kubernetes(k8s)**的完整思路和步骤。
假设你使用的是 kubeadm 部署(最常见、官方推荐)。


一、升级前准备(非常重要)

1️⃣ 查看当前版本

kubectl version
kubeadm version

2️⃣ 确认可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

⚠️ 升级原则

  • 不能跨 minor 版本升级
  • 例如:
    1.26.x → 1.27.x
    1.24.x → 1.27.x

3️⃣ 备份(强烈建议)

cp -r /etc/kubernetes /etc/kubernetes.bak
etcdctl snapshot save /backup/etcd-snapshot.db

二、升级控制平面(Master 节点)

1️⃣ 升级 kubeadm

yum install -y kubeadm-1.27.x-0 --disableexcludes=kubernetes

验证:

kubeadm version

2️⃣ 检查升级计划

kubeadm upgrade plan

确认无误后执行:

kubeadm upgrade apply v1.27.x

3️⃣ 升级 kubelet 和 kubectl

yum install -y kubelet-1.27.x-0 kubectl-1.27.x-0 --disableexcludes=kubernetes

重启 kubelet:

systemctl daemon-reload
systemctl restart kubelet

三、升级 Worker 节点

逐台升级,不要同时升级多个节点

1️⃣ 驱逐节点(在 master 执行)

kubectl drain <node-name> --ignore-daemonsets --force

2️⃣ 升级 kubeadm

yum install -y kubeadm-1.27.x-0 --disableexcludes=kubernetes

3️⃣ 执行升级

kubeadm upgrade node

4️⃣ 升级 kubelet / kubectl

yum install -y kubelet-1.27.x-0 kubectl-1.27.x-0 --disableexcludes=kubernetes
systemctl restart kubelet

5️⃣ 恢复节点调度

kubectl uncordon <node-name>

四、验证升级结果

kubectl get nodes
kubectl version

示例输出:

NAME        STATUS   VERSION
master      Ready    v1.27.x
node1       Ready    v1.27.x

五、其他常见情况

✅ 如果你用的是 Docker

确认 Docker 与 k8s 版本兼容(一般没问题)

✅ 如果你用的是 containerd

确认 containerd 版本:

containerd --version

六、CentOS 特别注意点

  • CentOS 7 已 EOL,建议:
    • 升级到 Rocky Linux / AlmaLinux
    • 或至少使用 v1.28+(对老系统支持更好)
  • 防火墙 / SELinux 问题在升级后可能复现:
setenforce 0
systemctl stop firewalld

七、升级顺序总结(牢记)

Master kubeadm
→ kubeadm upgrade apply
→ kubelet + kubectl
→ Worker drain
→ Worker kubeadm upgrade
→ Worker kubelet
→ uncordon

如果你愿意,可以告诉我:

  • ✅ k8s 当前版本
  • ✅ 目标版本
  • ✅ 单 master 还是多 master
  • ✅ 是否生产环境

我可以给你精确到命令的升级方案

0