在 CentOS 上升级 Kubernetes(k8s) 一般指的是 kubeadm 集群 的升级。下面给你一个标准、安全的升级流程(以 1.x → 1.y 小版本升级为例,比如 1.28 → 1.29)。
kubectl get nodes
kubeadm version
✅ 只能逐级升级(不能跨多个次要版本)
1.27 -> 1.28 -> 1.29
官方文档: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
# 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 cordon <master-node>
yum install -y kubeadm-1.29.* --disableexcludes=kubernetes
kubeadm upgrade plan
kubeadm upgrade apply v1.29.x
yum install -y kubelet-1.29.* kubectl-1.29.* --disableexcludes=kubernetes
systemctl daemon-restart
systemctl restart kubelet
kubectl uncordon <master-node>
在 每个 worker 节点 操作:
kubectl cordon <worker-node>
kubectl drain <worker-node> --ignore-daemonsets --delete-emptydir-data
yum install -y kubeadm-1.29.* --disableexcludes=kubernetes
kubeadm upgrade node
yum install -y kubelet-1.29.* --disableexcludes=kubernetes
systemctl restart kubelet
kubectl uncordon <worker-node>
kubectl get nodes
kubectl version
所有节点 VERSION 应一致。
yum install -y kubeadm-1.29.0 --disableexcludes=kubernetes
kubeadm upgrade plan
kubeadm upgrade apply v1.29.0
如果你愿意,可以告诉我:
我可以给你 精确命令版本。