温馨提示×

centos怎样升级k8s

小樊
40
2026-09-18 12:19:43
栏目: 智能运维

在 CentOS 上升级 Kubernetes(k8s)通常是指在已有集群上做版本升级(不是重装)。下面按最常用、最稳妥的方式(kubeadm 集群)说明。


一、升级前准备(重要)

1. 查看当前版本

kubectl version
kubeadm version

2. 确认可升级路径

⚠️ 不能跨多个大版本直接升

  • 例如:1.24 → 1.25 ✅
  • 例如:1.22 → 1.25 ❌(需逐步升)

官方升级策略:

一次只能升级 一个小版本

3. 备份(强烈建议)

# etcd 备份
ETCDCTL_API=3 etcdctl snapshot save snapshot.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

二、升级 Master 节点

1. 驱逐节点(可选)

kubectl drain <master-node> --ignore-daemonsets

2. 升级 kubeadm

yum install -y kubeadm-1.25.0-0 --disableexcludes=kubernetes

3. 查看升级计划

kubeadm upgrade plan

4. 执行升级

kubeadm upgrade apply v1.25.0

5. 升级 kubelet & kubectl

yum install -y kubelet-1.25.0-0 kubectl-1.25.0-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet

6. 解除驱逐

kubectl uncordon <master-node>

三、升级 Worker 节点

1. 驱逐节点

kubectl drain <worker-node> --ignore-daemonsets

2. 升级组件

yum install -y kubeadm-1.25.0-0 --disableexcludes=kubernetes
kubeadm upgrade node
yum install -y kubelet-1.25.0-0 kubectl-1.25.0-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet

3. 恢复节点

kubectl uncordon <worker-node>

四、验证升级

kubectl get nodes
kubectl version

五、常见问题

1. Docker / containerd

  • Kubernetes ≥ 1.24 默认不再支持 docker shim
  • 推荐使用 containerd

检查:

containerd --version

2. 升级失败回滚

  • etcd 快照恢复
  • 或重新初始化节点

六、非 kubeadm 集群?

如果你用的是:

  • 二进制部署
  • k3s / microk8s
  • 云厂商托管(ACK/EKS/GKE)

升级方式不同,可告诉我你的部署方式。


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

  • CentOS 版本(7 / 8 / Stream)
  • k8s 当前版本
  • 部署方式(kubeadm / 二进制)

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

0 踩