升級工作負載叢集

本主題說明如何升級 Tanzu Kubernetes Grid (TKG) 工作負載叢集。對於具有獨立管理叢集的 TKG,您需要先升級會管理工作負載叢集的管理叢集。

重要

  • 如果要升級在 vSphere 8 中使用主管部署的工作負載叢集,請參閱《使用 Tanzu CLI 來建立和管理 TKG 2.3 工作負載叢集》中的升級由主管部署的叢集 (僅限 vSphere 8)
  • 如要升級使用本機儲存的虛擬機器範本的 Edge 工作負載叢集,請參閱升級具有本機虛擬機器範本的 Edge 叢集
  • 如要升級從自訂叢集清單建立的工作負載叢集,請參閱升級自訂叢集
  • 獨立管理叢集和工作負載叢集會使用用戶端憑證來驗證用戶端。這些憑證的有效期為一年。若要更新憑證,請至少每年升級一次叢集。

必要條件

基礎結構必要條件

重要

Tanzu Kubernetes Grid v2.4.x 是支援升級 AWS 和 Azure 上現有 TKG 工作負載叢集的最後一個 TKG 版本。Tanzu Kubernetes Grid v2.5 中將移除在 AWS 和 Azure 上升級 TKG 工作負載叢集的功能。

從現在開始,VMware 建議您使用 Tanzu Mission Control 建立原生 AWS EKS 和 Azure AKS 叢集。但是,在 AWS 和 Azure 上升級現有 TKG 工作負載叢集仍完全獲 TKG v2.4.x 及以下版本支援。

有關詳細資訊,請參見《VMware Tanzu Kubernetes Grid v2.4 版本資訊》中的〈棄用 AWS 和 Azure 上的 TKG 管理和工作負載叢集〉

vSphere
如果您要升級 vSphere 上執行的叢集,vSphere 中必須提供適當的基礎映像範本 OVA 作為虛擬機器範本,您才能將叢集升級到 Tanzu Kubernetes Grid 版本的非預設 Kubernete 版本。有關將 OVA 檔匯入到 vSphere 的資訊,請參閱 準備升級叢集中的 vSphere 索引標籤。
AWS
如果您要升級在 Amazon Web Services (AWS) 上執行的叢集,則含有支援的 Kubernetes 版本的 Amazon Linux 2 Amazon 機器映像 (AMI),會開放給所有支援的 AWS 區域中的所有 AWS 使用者使用。Tanzu Kubernetes Grid 會自動將適當的 AMI 版本用於您在升級期間指定的 Kubernetes 版本。
Azure
如果要升級在 Azure 上執行的叢集,請確定您已完成 準備升級叢集Azure 索引標籤的步驟。


程序

升級程序會升級工作負載叢集的所有控制平面和 worker 節點中的 Kubernetes 版本。

  1. 若要查看可用管理叢集的互動式清單,並選取管理您要升級的叢集的管理叢集,請執行 tanzu context use 命令:

    tanzu context use
    
  2. 若要列出工作負載叢集,請執行:

    tanzu cluster list --include-management-cluster -A
    

    具有 --include-management-cluster -A 選項的 tanzu cluster list 命令會顯示正在管理叢集及其管理的所有叢集中執行的 Kubernetes 版本。在此範例中,您可以看到管理叢集已升級 v1.26.8,但工作負載叢集執行的是舊版本的 Kubernetes。

    NAME                 NAMESPACE   STATUS    CONTROLPLANE  WORKERS  KUBERNETES         ROLES       PLAN  TKR
    k8s-1-24-14-cluster  default     running   1/1           1/1      v1.24.14+vmware.1  <none>      dev   v1.24.14---vmware.1-tkg.1
    k8s-1-25-10-cluster  default     running   1/1           1/1      1.25.10+vmware.1   <none>      dev   1.25.10---vmware.1-tkg.1
    mgmt-cluster         tkg-system  running   1/1           1/1      v1.26.8+vmware.1   management  dev   v1.26.8---vmware.1-tkg.1
    
  3. 若要探索管理叢集提供了哪些 Kubernetes 版本,請執行 tanzu kubernetes-release get 命令:

    tanzu kubernetes-release get
    

    輸出會列出可用來部署叢集的所有 Kubernetes 版本,且會提供以下附註:

    • COMPATIBLE:目前的管理叢集可以使用此 Tanzu Kubernetes 版本 (tkr) 來部署工作負載叢集。
    • UPDATES AVAILABLE:此 tkr 在其 Kubernetes 版本系列中不是最新的。執行此 tkr 版本的任何工作負載叢集都可以升級到較新的版本。

    例如:

    NAME                              VERSION                         COMPATIBLE  ACTIVE  UPDATES AVAILABLE
    v1.24.17---vmware.1-tiny.2-tkg.1  v1.24.17+vmware.1-tiny.2-tkg.1  True        True
    v1.24.17---vmware.2-tkg.1         v1.24.17+vmware.2-tkg.1         True        True
    v1.25.13---vmware.1-tiny.2-tkg.1  v1.25.13+vmware.1-tiny.2-tkg.1  True        True
    v1.25.13---vmware.2-tkg.1         v1.25.13+vmware.2-tkg.1         True        True
    v1.26.8---vmware.1-tiny.2-tkg.1   v1.26.8+vmware.1-tiny.2-tkg.1   True        True
    v1.26.8---vmware.2-tkg.1          v1.26.8+vmware.2-tkg.1          True        True
    
  4. 若要探索您可以將執行舊版 tkr 的工作負載叢集升級到哪些較新的 tkr 版本,請執行 tanzu kubernetes-release available-upgrades get 命令,同時指定目前的 tkr 版本:

    tanzu kubernetes-release available-upgrades get v1.25.10---vmware.2-tkg.1
    

    此命令會列出對於正在執行指定版本的叢集,您可以將其升級至的所有可用 Kubernetes 版本。

    您還可以透過在 tkr 命令中指定叢集名稱來探索特定工作負載叢集可用的 tanzu cluster available-upgrades get 版本:

    tanzu cluster available-upgrades get k8s-1-24-14-cluster
    

    此命令會列出與指定叢集相容的所有 Kubernetes 版本。

    升級 tkr 版本時,不能跳過次要版本。例如,您無法將叢集直接從 v1.24 升級到 v1.26.x。必須先將 v1.24.x 叢集升級到 v1.25.x,再將叢集升級到 v1.26.x。

  5. (Azure) 如果叢集正在 Azure 上執行,請在升級叢集之前,先設定 AZURE_CLIENT_SECRET 環境變數:

    export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
    
  6. (vSphere) 使用節點 IPAM的任何叢集都需要在其 IP 集區中至少具有一個未指派的 IP 位址,然後才能升級。

    1. 要檢查叢集是否使用節點 IPAM,請在叢集物件的 addressesFromPools spec.topology.variables 設定中尋找 network

      kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
      

      其中,CLUSTER-NAMENAMESPACE 是工作負載叢集的名稱和管理叢集命名空間。例如:

      kubectl -n default get cluster my-work-cluster -o json | jq '.spec.topology.variables[] | select(.name=="network")'
      {
        "name": "network",
        "value": {
          "addressesFromPools": [
            {
              "apiGroup": "ipam.cluster.x-k8s.io",
              "kind": "InClusterIPPool",
              "name": "mgmt-cluster-nimbus"
            }
          ],
          "ipv6Primary": false
        }
      } 
      
    2. 如要檢查叢集的 IP 集區是否具有未使用的位址,請將集區中的總數與目前配置的數量進行比較,如以下命令輸出的那樣:

      kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
      
  7. 執行 tanzu cluster upgrade CLUSTER-NAME 命令,並輸入 y 加以確認。若要跳過確認步驟,請指定 --yes 選項。

    若要將叢集升級到這個 Tanzu Kubernetes Grid 版本的預設 Kubernetes 版本,請執行 tanzu cluster upgrade 命令,且不包含任何選項。在此版本中,預設版本為 v1.26.8。例如:

    tanzu cluster upgrade k8s-1-25-7-cluster
    

    如果叢集未在 default 命名空間中執行,請指定 --namespace 選項:

    tanzu cluster upgrade CLUSTER-NAME --namespace NAMESPACE-NAME
    

    如果升級在完成之前就已逾時,請再次執行 tanzu cluster upgrade,並指定 --timeout 選項,且其值大於預設值 30 分鐘:

    tanzu cluster upgrade CLUSTER-NAME --timeout 45m0s
    
    重要

    作業在 Azure 上的執行時間有時比在其他平台上還久。如果要升級 Azure 上的叢集,請定期設定 --timeout 選項,以避免失敗。

    如果 IaaS 帳戶中的多個基礎虛擬機器映像具有要升級到的相同的 Kubernetes 版本,則可以包括 --os-name 和其他選項以指定目標作業系統,如選擇要升級至的作業系統

    tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
    

    在 vSphere 上,可以使用 --vsphere-vm-template-name 選項為叢集節點指定目標 OVA 範本,如選擇要升級至的 OVA 範本所述:

    tanzu cluster upgrade CLUSTER-NAME --vsphere-vm-template-name "/dc0/vm/tanzu/ubuntu-2004-kube-v1.29.9-vmware.1"
    

    由於您不能略過 tkr 的次要版本,如果您嘗試升級的叢集在預設版本後面有多個次要版本,升級命令將失敗。例如,您無法直接從 v1.24.x 升級到 v1.26.x。如果您要將叢集升級到的版本,並不是這個 Tanzu Kubernetes Grid 版本的 Kubernetes 預設版本,請指定 --tkr 選項,並在其中指定所選版本的 NAME,如上面的 tanzu kubernetes-release get 所列。例如,如要將叢集 k8s-1-24-14-cluster 從 v1.24.14 升級至 v1.25.13。

    tanzu cluster upgrade k8s-1-24-14-cluster --tkr v1.25.13---vmware.1-tkg.1
    
  8. 升級完成後,請執行 tanzu cluster list 命令,以檢查工作負載叢集是否已升級:

    tanzu cluster list --include-management-cluster -A
    
  9. 重新產生管理員 kubeconfig

    tanzu cluster kubeconfig get CLUSTER-NAME --admin
    

    其中,CLUSTER-NAME 是工作負載叢集的名稱。

    重要

    如果在升級後不續訂 kubeconfig,則在叢集過期後將無法存取該叢集。

  10. 如果使用 LDAP 或 OIDC 身分識別提供者,請確認您可以使用 kubectl 來驗證叢集。例如:

    kubectl get pods -A --kubeconfig my-cluster-credentials
    
  11. 升級正在工作負載叢集上執行的任何 CLI 管理的套件,例如 Contour、Fluent Bit 或 Prometheus。如需升級 CLI 管理的套件的詳細資訊,請參閱更新套件

    重要

    如果已在工作負載叢集上安裝 Prometheus,並將工作負載叢集升級到 Kubernetes v1.25,則必須至少將 Prometheus 升級到版本 2.37.0+vmware.3-tkg.1。Prometheus 軟體套件的早期版本 (例如版本 2.37.0+vmware.1-tkg.1) 與 Kubernetes 1.25 不相容。

升級具有本機虛擬機器範本的 Edge 叢集

您無法使用 tanzu cluster upgrade 命令升級具有本機虛擬機器範本的 Edge 工作負載叢集的 Kubernetes 版本,如上方指定本機虛擬機器範本中所述。

但可以升級 Edge 工作負載叢集的 Kubernetes 版本,如下所示:

  1. 將新虛擬機器範本上傳到本機 vCenter 並記錄其詳細目錄路徑,例如 /dc0/vm/ubuntu-2004-kube-v1.26.8+vmware.1-tkg.1

  2. 編輯要升級的 Cluster 物件的資訊清單:

    kubectl edit cluster CLUSTER-NAME
    

    其中,CLUSTER-NAME 是叢集的名稱

  3. spec.topology 之下更新以下內容:

    • 設定 version 以反映新的 Kubernetes 版本。
    • 將所有 vcenter.template 值設為新本機範本的詳細目錄路徑,以在叢集範圍內或在單個機器部署下進行更新。
  4. 儲存並退出以套用新的 Cluster 物件設定。

後續步驟

現在,您可以繼續使用 Tanzu CLI 來管理叢集。如需詳細資訊,請參閱使用 Tanzu CLI 來建立和管理 TKG 2.3 工作負載叢集

check-circle-line exclamation-circle-line close-line
Scroll to top icon