温馨提示×

centos k8s怎么升级版本

小樊
38
2026-08-04 21:23:37
栏目: 智能运维

CentOS 上升级 Kubernetes(k8s)版本,通常分为 规划 → 升级控制平面 → 升级节点 → 验证 几个阶段。下面给你一套通用、生产可用的升级流程(适用于 kubeadm 部署的集群,最常见)。


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

1️⃣ 查看当前版本

kubectl version --short
kubeadm version

示例:

Server Version: v1.26.3

2️⃣ 确认可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

⚠️ 一次只能升级一个小版本 例如:

1.26 → 1.27 ✅
1.26 → 1.28 ❌

3️⃣ 查看集群状态

kubectl get nodes
kubectl get pods -A

确保:

  • 所有节点 Ready
  • 没有异常 Pod

4️⃣ 备份(强烈建议)

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

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

1️⃣ 升级 kubeadm

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

验证:

kubeadm version

2️⃣ 检查升级计划

kubeadm upgrade plan

确认目标版本无误。


3️⃣ 执行升级

kubeadm upgrade apply v1.27.x

✅ 升级内容:

  • API Server
  • Controller Manager
  • Scheduler
  • etcd(如由 kubeadm 管理)

4️⃣ 升级 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 节点(逐台)

⚠️ 不要同时升级所有 worker


1️⃣ 驱逐节点(可选但推荐)

kubectl drain node-name \
  --ignore-daemonsets \
  --delete-emptydir-data

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
kubelet --version

示例:

NAME      STATUS   VERSION
master    Ready    v1.27.x
node-1    Ready    v1.27.x

五、常见问题

❓ CentOS 7 还能升级吗?

✅ 可以,但:

  • CentOS 7 已 EOL
  • 建议迁移到:
    • Rocky Linux
    • AlmaLinux
    • CentOS Stream 8/9

❓ 升级失败怎么办?

  • 回滚 etcd 快照
  • 使用 /etc/kubernetes.bak 恢复配置
  • 重新 join 节点

❓ 二进制部署的 k8s 怎么升级?

流程不同,需要:

  • 手动替换二进制
  • 重启组件
  • 控制顺序

六、升级推荐顺序(总结)

控制平面 → Master kubelet → Worker 节点(逐台)

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

  • ✅ k8s 当前版本
  • ✅ 目标版本
  • ✅ 单 Master 还是多 Master
  • ✅ 是否使用 containerd / docker

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

0