您可以使用 kubectl patch 方法對 Tanzu Kubernetes 叢集執行「就地」更新。kubectl patch 方法是使用 kubectl edit 命令執行其中一個支援的叢集更新作業的替代方法。

關於 Kubectl Patch 命令

限制: 請勿嘗試按照本主題中所述使用 kubectl patch 更新叢集規格來達到使其符合 TKGS v1alpha2 API 的目的。對於此類更新,應使用 kubectl edit。請參閱 將叢集規格轉換為 TKGS v1alpha2 API 後更新 Tanzu Kubernetes 版本
kubectl patch 命令會對叢集執行「就地」更新。此命令的目的是提供 Kubernetes 版本的升級方法,正是此處記錄的方法。如需有關 kubectl patch 命令的詳細資訊,請參閱 Kubernetes 說明文件中的 〈使用 kubectl 修補程式就地更新 API 物件〉

此處示範的方法使用 UNIX shell 命令 read 從鍵盤取得輸入,並將其指派給名為 $PATCH 的變數。kubectl patch 命令會叫用 Kubernetes API 來更新叢集資訊清單。--type=merge 旗標表示資料僅包含與現有資訊清單不同的內容。

使用修補程式方法升級 Kubernetes 版本

觸發輪流更新的最常見方法是使用 .spec.distribution.version.spec.distribution.fullVersion 內容來變更叢集的 Kubernetes 發行版本。您可以更新 version 提示,並取消設定 fullVersion 或將其設為 null,以避免在探索期間發生潛在的版本不相符問題。

$ read -r -d '' PATCH <<'EOF'
spec:
  distribution:
    fullVersion: null    # NOTE: Must set to null when updating just the version field
    version: v1.18.5
EOF

使用 kubectl patch 命令套用更新。您必須在 "$PATCH" 變數的兩側加上引號,以在叢集資訊清單中保留換行字元。將 TKG-CLUSTER-NAME 值取代為叢集的實際名稱。

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
預期的結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

使用修補程式方法透過變更節點的 VirtualMachineClass 來更新叢集

觸發 Tanzu Kubernetes 叢集的輪流更新的另一種方式如下:變更節點集區的 VirtualMachineClass,即變更 .spec.topology.controlPlane.class 內容或 .spec.topology.workers.class 內容。

read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      class: best-effort-xlarge
    workers:
      class: best-effort-xlarge
EOF

使用 kubectl patch 命令套用更新,並將變數取代為叢集名稱。

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
預期的結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

使用修補程式方法透過變更節點的 StorageClass 來更新叢集

觸發 Tanzu Kubernetes 叢集的輪流更新的另一種方式如下:變更節點集區的 StorageClass,即變更 .spec.topology.controlPlane.storageClass 內容或 .spec.topology.workers.storageClass 內容。

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
使用 kubectl patch 命令套用更新,並將變數取代為叢集名稱。
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
預期的結果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched