Debian上升级Kubernetes版本的详细步骤
/etc/kubernetes/目录)和etcd数据(/var/lib/etcd/目录),可使用etcdctl snapshot save工具备份etcd数据,防止升级过程中数据丢失。kubectl get nodes确认所有节点状态为Ready,运行kubectl get pods --all-namespaces确保所有Pod处于Running状态;检查是否有未完成的Job或DaemonSet,避免升级中断业务。uname -r检查内核版本,确保支持新版本Kubernetes(如Kubernetes 1.29+需要Linux内核5.15+)。sudo apt update && sudo apt upgrade -y,将系统包(如apt、systemd)升级到最新版本,避免依赖冲突。/etc/apt/sources.list.d/kubernetes.list文件,添加对应版本的Kubernetes仓库(以Kubernetes 1.28为例):deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main
导入GPG密钥:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg,然后运行sudo apt update同步仓库。wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubeadm
chmod +x kubeadm
sudo mv kubeadm /usr/local/bin/
验证kubeadm版本:kubeadm version,确保显示为目标版本。kubeadm upgrade plan,查看当前集群可升级的目标版本及需要升级的组件(如kube-apiserver、kube-controller-manager),确认升级路径合法(如从1.27升级到1.28)。kubeadm upgrade apply v1.28.1,按照提示确认升级(输入yes)。该命令会自动升级控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)及静态Pod配置。wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubelet
wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubectl
chmod +x kubelet kubectl
sudo mv kubelet /usr/local/bin/
sudo mv kubectl /usr/local/bin/
重启kubelet服务:sudo systemctl daemon-reload && sudo systemctl restart kubelet。kubectl uncordon <master-node-name>,将Master节点标记为可调度,恢复其接收Pod调度。kubectl drain <node-name> --ignore-daemonsets,将节点标记为不可调度,并驱逐所有Pod(DaemonSet管理的Pod除外),避免升级过程中Pod中断。sudo apt install -y kubeadm=<target-version>-00升级kubeadm。kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>,将节点重新加入集群(token和hash可通过kubeadm token create和kubeadm certs certificate-hash获取)。kubectl uncordon <node-name>,将节点标记为可调度。kubectl get nodes,确认所有节点状态为Ready,且版本显示为目标版本。kubectl get pods --all-namespaces,确保所有Pod处于Running状态,无CrashLoopBackOff或Pending等异常。nginx),检查其是否能正常启动和访问,确认集群功能未受影响。journalctl -u kubelet),及时处理异常。kubeadm upgrade revert v<target-version>回滚到上一个稳定版本,恢复集群状态。