K8S在Debian上的更新与升级流程
/etc/kubernetes/目录(包含集群配置文件)和/var/lib/etcd/目录(etcd数据库数据)。可使用etcdctl工具备份etcd数据,命令示例:etcdctl snapshot save /data/etcd/etcd_bak.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。Ready,所有Pod处于Running状态;确认无未完成的作业或任务。sudo apt update && sudo apt upgrade -y,确保Debian系统和现有软件包为最新版本。编辑Kubernetes专用源文件(如/etc/apt/sources.list.d/kubernetes.list),指向目标版本的稳定仓库。示例(以1.28.x为例):
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/RPM-GPG-KEY-kubernetes-1.28.0
EOF
更新软件包列表:sudo apt update。
--disableexcludes=kubernetes强制安装指定版本(如1.28.2),避免自动升级到其他版本。命令示例:sudo apt install -y kubeadm=1.28.2-0 kubeadm-config=1.28.2-0 kubelet=1.28.2-0 kubectl=1.28.2-0 --disableexcludes=kubernetes。sudo kubeadm upgrade plan,查看当前版本到目标版本的兼容性及需执行的步骤。sudo kubeadm upgrade apply v1.28.2,完成控制平面组件(如kube-apiserver、kube-controller-manager、kube-scheduler)的升级。sudo systemctl daemon-reload && sudo systemctl restart kubelet,使变更生效。kubectl uncordon k8s-master,允许Master节点重新调度Pod。kubectl drain k8s-node1 --ignore-daemonsets,将节点标记为不可调度并驱逐所有Pod(守护进程集管理的Pod除外)。sudo kubeadm upgrade node,同步节点配置至新版本。sudo systemctl daemon-reload && sudo systemctl restart kubelet。kubectl uncordon k8s-node1,恢复节点调度功能。kubectl get nodes,确认所有节点状态为Ready且版本已更新。kubectl get componentstatuses,确保kube-apiserver、kube-controller-manager等核心组件状态正常。kubectl get pods --all-namespaces,确认所有Pod处于Running或Completed状态。