温馨提示×

如何在centos升级k8s

小樊
43
2026-10-03 09:57:39
栏目: 智能运维

在 CentOS 上升级 Kubernetes(k8s)通常分为 控制平面(Master) 和 工作节点(Node) 两部分。下面以 kubeadm 安装方式 为例,说明标准升级流程(适用于 CentOS 7/8)。


一、升级前准备

1. 查看当前版本

kubectl version
kubeadm version

2. 确认可升级版本

yum list --showduplicates kubeadm --disableexcludes=kubernetes

⚠️ 一次只能跨一个小版本
例如:1.26 → 1.27 → 1.28

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 --all-namespaces -o yaml > all-resources.yaml

二、升级控制平面(Master)

1. 升级 kubeadm

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

2. 检查升级可行性

kubeadm upgrade plan

3. 执行升级

kubeadm upgrade apply v1.28.0

4. 升级 kubelet 和 kubectl

yum install -y kubelet-1.28.0-0 kubectl-1.28.0-0 --disableexcludes=kubernetes

5. 重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

三、升级工作节点(Node)

1. 驱逐节点(在 Master 执行)

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

2. 在 Node 上升级

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

3. 恢复节点调度

kubectl uncordon <node-name>

四、验证升级

kubectl get nodes
kubectl version

五、常见注意事项

  • ✅ 不建议跨大版本升级
  • ✅ 升级顺序:Master → Node
  • ✅ 生产环境建议逐节点升级
  • ❌ 不要直接 yum update 所有 k8s 组件

六、如果你用的是其他方式

  • 二进制部署:手动替换二进制文件
  • k3s / Rancher:使用对应管理工具
  • 容器化 kubelet:需调整启动方式

如果你能告诉我:

  • CentOS 版本
  • Kubernetes 当前版本
  • 安装方式(kubeadm / 二进制 / k3s)

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

0 踩