在 Linux 上“升级 K8s”通常指 升级 Kubernetes 集群(kubeadm 方式最常见),也包括 kubectl / kubelet / kube-proxy 等组件。下面按生产可用、最主流的 kubeadm 集群来说明。
kubectl get nodes
kubelet --version
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 或
apt-cache madison kubeadm
⚠️ 规则:
1.26 → 1.27 ✅1.26 → 1.28 ❌# 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
# CentOS / RHEL
yum install -y kubeadm-1.27.x-0 --disableexcludes=kubernetes
# Ubuntu / Debian
apt-get install -y kubeadm=1.27.x-00
kubeadm upgrade plan
kubeadm upgrade apply v1.27.x
yum install -y kubelet-1.27.x-0 kubectl-1.27.x-0
systemctl daemon-reload
systemctl restart kubelet
⚠️ 生产环境务必 一台一台来
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
yum install -y kubeadm-1.27.x-0 kubelet-1.27.x-0 kubectl-1.27.x-0
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon <node-name>
kubectl get nodes
kubectl version
所有节点版本应一致,状态为 Ready。
kube-apiserver / kube-controller / kube-scheduler / kubelet 二进制curl -LO https://dl.k8s.io/release/v1.27.0/bin/linux/amd64/kubectl
❌ 跨多版本升级
❌ 不备份 etcd
❌ 同时升级多个 worker
❌ 忽略 CNI(Calico / Flannel)兼容性
你可以告诉我:
我可以直接给你精确命令。