温馨提示×

centos k8s如何进行升级

小樊
48
2026-09-24 15:30:24
栏目: 智能运维

在 CentOS 上升级 Kubernetes(k8s)集群,通常分为 控制节点(Master) 和 工作节点(Worker) 两部分。下面以 kubeadm 部署的集群 为例,说明标准升级流程(这是最常见、官方推荐的方式)。


一、升级前准备

1. 查看当前版本

kubectl version
kubeadm version

2. 确认可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

⚠️ 注意:

  • 一次只能升级 一个小版本(如 1.26 → 1.27)
  • 不能跨多个大版本升级

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. 升级 kubeadm

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

2. 检查升级计划

kubeadm upgrade plan

3. 执行升级

kubeadm upgrade apply v1.27.x

4. 升级 kubelet 和 kubectl

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

5. 重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

三、升级工作节点(Worker)

1. 在 Master 上驱逐节点

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

2. 在 Worker 节点上升级

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

3. 恢复节点调度

kubectl uncordon <node-name>

四、验证升级结果

kubectl get nodes
kubectl version

确保所有节点版本一致,状态为 Ready。


五、常见问题

1. 容器运行时(containerd / docker)

  • Kubernetes 1.24+ 已移除 dockershim
  • 推荐使用 containerd
  • 升级 k8s 时一般 不需要升级 containerd

2. CentOS 系统版本

  • CentOS 7:k8s 1.24 之后支持有限
  • 推荐 CentOS 8 / Rocky / AlmaLinux

六、如果是二进制部署(非 kubeadm)

升级方式不同:

  • 手动替换二进制文件
  • 逐个重启组件
  • 风险较高,不建议生产环境频繁使用

如果你能提供:

  • k8s 当前版本
  • 目标版本
  • 部署方式(kubeadm / 二进制 / 云厂商)

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

0 踩