在 Debian 上“升级 k8s”通常包含两部分:
下面按**最常见场景(kubeadm 部署的集群)**说明。
kubectl version --short
kubelet --version
✅ 只能一个个小版本升级
1.26 → 1.27 → 1.28 → 1.29
❌ 不能跨多个大版本(如 1.25 → 1.29)
官方升级说明:
kubeadm upgrade plan
etcdctl snapshot save snapshot.db
或用 Velero 备份集群资源。
sudo apt update
sudo apt upgrade -y
sudo reboot
⚠️ 避免在 Master 节点同时升级 OS 和 K8s,建议分开操作。
以升级到 1.29 为例:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubeadm=1.29.x-00
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.29.x
升级 kubelet:
sudo apt install -y kubelet=1.29.x-00 kubectl=1.29.x-00
sudo systemctl restart kubelet
在 Master 上驱逐节点:
kubectl drain <node-name> --ignore-daemonsets
在 Worker 上:
sudo apt install -y kubeadm=1.29.x-00
sudo kubeadm upgrade node
sudo apt install -y kubelet=1.29.x-00
sudo systemctl restart kubelet
回到 Master:
kubectl uncordon <node-name>
kubectl get nodes
kubectl version --short
| 部署方式 | 升级方式 |
|---|---|
| k3s | `curl -sfL https://get.k3s.io |
| microk8s | sudo snap refresh microk8s --channel=1.29/stable |
| 二进制 | 手动替换 kubelet / apiserver 等 |
Q:能跨版本升级吗?
❌ 不行,必须逐步升级。
Q:升级会影响 Pod 吗?
会,节点升级时会驱逐 Pod。
Q:Debian 12 支持最新 K8s 吗?
✅ 支持,推荐 Debian 12 + K8s 1.28/1.29。
如果你能告诉我:
我可以给你精确的升级命令。