溫馨提示×

如何升級centos k8s版本

小樊
33
2025-10-15 13:51:20
欄目: 智能運維

如何在CentOS上升級Kubernetes(K8s)版本
升級Kubernetes集群需遵循“準備充分、漸進執行、驗證到位”的原則,以下是基于kubeadm工具的標準流程及關鍵注意事項:

一、升級前準備:規避風險的核心步驟

  1. 備份關鍵數據
    備份集群配置(/etc/kubernetes/目錄)和etcd數據(etcd是K8s的核心存儲組件),確保升級失敗時可快速恢復。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
    
  2. 檢查集群健康狀態
    確保集群無未解決問題:

    • 控制平面組件狀態:kubectl get pods -n kube-system -l component=kube-apiserver(需全部為Running);
    • 節點狀態:kubectl get nodes(所有節點需為Ready);
    • Pod運行狀態:kubectl get pods --all-namespaces --field-selector status.phase!=Running(無CrashLoopBackOffError狀態的Pod)。
  3. 確認升級路徑
    Kubernetes不支持跨多個次要版本跳躍升級(如從1.22直接升級到1.25),必須遵循“相鄰次要版本遞進”規則(如1.22→1.23→1.24→1.25)??赏ㄟ^kubectl version查看當前版本,在官方升級文檔中確認目標版本的兼容性。

  4. 檢查組件兼容性
    確保周邊組件與目標K8s版本匹配:

    • 容器運行時:Docker 1.24+已棄用,需切換為containerd(K8s 1.25對應containerd 1.6+);
    • 網絡插件:Calico 3.24支持K8s 1.25,Flannel 0.20.0及以上支持K8s 1.25;
    • 工具鏈:kubectl版本需與集群版本相差不超過1個次要版本(如集群1.24,kubectl需為1.23-1.25)。
  5. 配置Kubernetes Repo倉庫
    在所有節點上配置官方Kubernetes repo,確保能下載新版本軟件包:

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
    

二、核心升級步驟:以kubeadm部署的集群為例

1. 升級Master節點(控制平面)

(1)升級kubeadm工具
在Master節點上,使用yum安裝新版本kubeadm(以升級到1.25為例):

sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes

(2)檢查升級計劃
運行kubeadm upgrade plan,確認集群可升級的目標版本及需要修改的配置:

kubeadm upgrade plan
# 輸出示例:建議升級到v1.25.0,當前版本v1.24.3

(3)執行控制平面升級
使用kubeadm upgrade apply升級控制平面組件(kube-apiserver、kube-controller-manager、kube-scheduler):

sudo kubeadm upgrade apply v1.25.0

升級完成后,系統會提示“升級成功”,控制平面組件會自動重啟。

(4)升級kubelet和kubectl
在Master節點上升級kubeletkubectl

sudo yum install -y kubelet-1.25.0-00 kubectl-1.25.0-00 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet

(5)解除Master節點保護
升級后,將Master節點標記為可調度(允許Pod調度到Master):

kubectl uncordon <master-node-name>

2. 升級Worker節點(工作節點)

(1)逐個升級工作節點
為避免集群中斷,每次僅升級1個Worker節點,重復以下步驟:

  • 騰空節點:將節點標記為不可調度,并驅逐所有Pod(DaemonSet管理的Pod會自動重建):
    kubectl drain <worker-node-name> --ignore-daemonsets
    
  • 升級kubeadm:在工作節點上安裝新版本kubeadm(與Master版本一致):
    sudo yum install -y kubeadm-1.25.0-00 --disableexcludes=kubernetes
    
  • 升級kubelet和kubectl:同Master節點步驟,升級kubeletkubectl并重啟服務。

(2)升級節點組件
在Master節點上,使用kubeadm upgrade node升級工作節點的組件:

sudo kubeadm upgrade node

(3)解除節點保護
升級完成后,將工作節點標記為可調度:

kubectl uncordon <worker-node-name>

(4)驗證節點狀態
等待節點狀態變為Readykubectl get nodes),確認Pod恢復正常運行(kubectl get pods --all-namespaces)。

三、升級后驗證:確保集群穩定性

  1. 檢查集群狀態

    kubectl get nodes  # 所有節點應為Ready狀態
    kubectl get pods -A  # 所有Pod應為Running狀態
    
  2. 檢查組件日志
    查看K8s組件日志,確認無錯誤信息:

    sudo journalctl -u kubelet -f
    sudo journalctl -u kube-apiserver -f
    
  3. 測試業務功能
    訪問集群內的業務Pod(如curl http://<pod-ip>:<port>),確認業務正常運行。

四、注意事項:避免升級失敗的“坑”

  • 禁止跳過版本:直接跨多個次要版本升級(如1.23→1.25)可能導致組件不兼容,必須逐步升級。
  • 不要在業務高峰期操作:升級過程中可能出現短暫的服務不可用,建議在低峰期進行。
  • 保留舊版本備份:升級前備份/etc/kubernetes//var/lib/etcd/,以便快速回滾。
  • 監控集群狀態:升級過程中使用Prometheus、Grafana等工具監控集群指標(如CPU、內存、Pod狀態),及時處理異常。

通過以上步驟,可確保CentOS上的Kubernetes集群平穩升級到目標版本,同時保障業務連續性。升級前務必在測試環境驗證流程,降低生產環境風險。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女