一、升級前準備
/etc/kubernetes/
目錄、/root/.kube/config
文件),可使用etcdctl snapshot save
命令備份etcd數據,防止升級過程中數據丟失。kubectl get nodes
確認所有節點狀態為Ready
,使用kubectl get pods --all-namespaces
檢查所有Pod狀態為Running
,確保集群無未決問題(如Pod異常、節點故障)。cat <<EOF > /etc/yum.repos.d/kubernetes.repo
添加倉庫配置)。二、升級Master節點
sudo yum update -y kubeadm
),或通過下載二進制文件手動替換(如wget https://dl.k8s.io/release/v<target-version>/bin/linux/amd64/kubeadm
,賦予執行權限后移動到/usr/local/bin/
)。kubeadm upgrade plan
命令,查看集群是否滿足升級條件(如依賴組件版本、節點狀態),并獲取可升級的目標版本列表。kubeadm upgrade apply v<target-version>
命令升級Master節點的控制平面組件(包括kube-apiserver、kube-controller-manager、kube-scheduler),命令會自動下載并安裝新版本組件。sudo yum remove -y kubelet kubectl
),安裝新版本(sudo yum install -y kubelet-<target-version> kubectl-<target-version>
),重啟kubelet服務(sudo systemctl daemon-reload && sudo systemctl restart kubelet
)。kubectl drain <node-name> --ignore-daemonsets
命令將節點標記為不可調度并驅逐所有Pod,升級完成后再使用kubectl uncordon <node-name>
恢復調度。三、升級Worker節點
kubeadm upgrade node
命令升級節點上的Kubernetes組件(如kubelet配置),或手動升級kube-proxy等組件(通過YUM或下載二進制文件)。kubectl drain <node-name> --ignore-daemonsets
命令騰空節點,升級完成后再恢復調度。四、升級后驗證
kubectl get nodes
確認所有節點狀態為Ready
,使用kubectl get pods --all-namespaces
檢查所有Pod狀態為Running
,確保集群恢復正常。journalctl -u kubelet
、journalctl -u kube-apiserver
等命令檢查Kubernetes組件日志,確認無錯誤或警告信息。curl
訪問應用接口)。五、注意事項