温馨提示×

centos怎样升级k8s部署

小樊
44
2026-10-06 07:55:36
栏目: 智能运维

在 CentOS 上升级 Kubernetes(k8s)部署,通常分为 kubeadm 方式 和 二进制方式。下面以 最常见的 kubeadm 部署 为例说明(CentOS 7/8 通用思路)。


一、升级前准备(重要)

1. 确认当前版本

kubectl version
kubeadm version

2. 查看可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

⚠️ 不能跨多个大版本升级
例如:1.24 → 1.25 → 1.26(一次升一个 minor 版本)

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

# 集群资源
kubectl get all -A -o yaml > cluster-backup.yaml

二、升级控制平面(Master)

1. 升级 kubeadm

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

2. 验证升级计划

kubeadm upgrade plan

3. 执行升级

kubeadm upgrade apply v1.26.x

4. 升级 kubelet & kubectl

yum install -y kubelet-1.26.x-0 kubectl-1.26.x-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet

三、升级 Worker 节点(逐台)

一台一台升,不要同时升

1. 驱逐节点(Master 上)

kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

2. 升级 kubeadm

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

3. 升级节点

kubeadm upgrade node

4. 升级 kubelet

yum install -y kubelet-1.26.x-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet

5. 恢复节点调度

kubectl uncordon <node-name>

四、升级后验证

kubectl get nodes
kubectl version

所有节点版本应一致。


五、如果是二进制部署(简略)

  1. 停止 kube-* 服务
  2. 替换二进制文件
  3. 修改配置文件(如 API 变更)
  4. 重启服务

六、常见注意事项

  • CentOS 8 已 EOL,建议迁移到 Rocky/AlmaLinux
  • 升级前关闭 swap
  • 注意 容器运行时(containerd / docker)兼容性
  • CoreDNS、kube-proxy 会自动升级

如果你能告诉我:

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

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

0 踩