在 Debian 上更新或安装指定版本的 Kubernetes
一 准备与版本选择
二 安装指定版本(全新安装或重装场景)
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
KVER=1.30.0-1.1
sudo apt-get update
sudo apt-get install -y kubelet=${KVER} kubeadm=${KVER} kubectl=${KVER}
sudo apt-mark hold kubelet kubeadm kubectl
# 仅在全新初始化时执行
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# 工作节点加入(使用 kubeadm init 输出的 join 命令)
sudo kubeadm join <control-plane-host>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
kubectl version --short
kubectl get nodes
说明:上述仓库条目中的 xenial 是 Kubernetes APT 仓库的发行代号,并非 Debian 版本;安装后使用 apt-mark hold 防止组件被意外升级。
三 就地升级集群(已存在集群)
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.30.0
kubectl drain <master-node> --ignore-daemonsets
sudo apt-get update
sudo apt-get install -y kubelet=1.30.0-1.1 kubectl=1.30.0-1.1
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon <master-node>
kubectl drain <worker-node> --ignore-daemonsets
sudo apt-get update
sudo apt-get install -y kubelet=1.30.0-1.1 kubectl=1.30.0-1.1
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon <worker-node>
kubectl version --short
kubectl get nodes
kubectl get pods -A
要点:升级期间保持 单主节点可调度 或合理安排控制平面维护窗口;升级完成后逐一恢复节点调度。
四 常见问题与注意事项