將 Tanzu Kubernetes 叢集規格自動轉換為 v1alpha2 API 格式後,若要對 Tanzu Kubernetes 叢集執行輪流更新 (通常透過變更 Tanzu Kubernetes 發行版本完成),可能需要對叢集規格進行一些預先處理以避免出現錯誤。
自動轉換叢集規格
若要將 vSphere with Tanzu 環境更新至 Tanzu Kubernetes Grid 服務 v1alpha2 API,請更新在其中執行服務的主管叢集。
Tanzu Kubernetes Grid 服務 執行 v1alpha2 API 後,系統會自動將所有現有的 Tanzu Kubernetes 叢集規格從 v1alpha1 格式轉換為 v1alpha2 格式。在自動轉換期間,系統會為每個叢集資訊清單建立並填入預期的欄位。API 取代和新增 列出 v1alpha2 API 中新增和已過時的叢集規格欄位。
若要為其資訊清單已自動轉換為 v1alpha2 格式的叢集更新 Tanzu Kubernetes 版本,需要執行一些手動預先處理以避免錯誤。叢集更新範例 列出了多個選項。
API 取代和新增
已過時的設定 | 新設定 | 註解 |
---|---|---|
|
|
必須使用 TKR NAME 格式。請參閱下列範例。 |
|
|
在轉換的叢集中,區塊 spec.topology.workers 會變成 spec.topology.nodePools[0] 。
|
|
|
count 將取代為 replicas |
|
|
class 將取代為 vmClass |
不適用 |
|
用於組織整理和分類物件的選擇性金鑰配對值;標籤會傳播到已建立的節點 |
不適用 |
|
用於節點向其登錄的選擇性污點;使用者定義的污點會傳播到已建立的節點 |
TKR NAME 格式為必填
除了要被取代的 spec.distribution.version
欄位之外,不支援指定 Tanzu Kubernetes 發行版本的 DISTRIBUTION 格式。這表示您無法使用下列字串格式來參考目標版本:1.21.2+vmware.1-tkg.1.ee25d55
、1.21.2
和 1.21
。
kubectl get tanzukubernetescluster NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkgs-cluster-1 test-cluster 3 3 v1.21.2---vmware.1-tkg.1.ee25d55 38h True True [1.21.2+vmware.1-tkg.1.ee25d55]
使用 kubectl edit 更新叢集規格
如果需要對叢集規格進行編輯,使其符合 TKGS v1alpha2 API,請使用 kubectl edit
方法。請勿嘗試對此類型的更新使用 kubectl patch
方法。請參閱編輯叢集資訊清單的方法。若要使用編輯器設定 kubectl
,請參閱為 Kubectl 指定預設文字編輯器。
叢集更新範例
由於變更 spec.distribution.version
是觸發叢集輪流更新的最常見方式 (請參閱 更新 Tanzu Kubernetes 叢集),且此欄位在 v1alpha2 API 中已過時,因此需要注意一些考慮事項並遵循一些預先處理建議,以避免發生潛在的叢集更新問題。
下列範例示範了如何將使用 v1alpha1 API 佈建的 Tanzu Kubernetes 叢集版本更新至執行 v1alpha2 API 的系統。
叢集升級範例 1:在控制平面中使用單一 TKR NAME 參考
建議方法是從轉換後的規格中移除所有 nodePools[*].tkr.reference.name
區塊,並使用目標版本的 TKR NAME 更新 controlPlane.tkr.reference.name
。在此情況下,會將同一 Tanzu Kubernetes 版本散佈到所有 nodePools[*]
節點。
未來,controlPlane
和 nodePools[*]
之間的 Tanzu Kubernetes 版本可能會有所不同。但是,目前叢集中的所有版本都必須相符,因此在 controlPlane
中放置單一 TKR NAME 參考就已足夠。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example1 namespace: tkgs-cluster-ns spec: settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium
叢集升級範例 2:針對每個節點集區使用 TKR NAME 參考
第二個範例是在 controlPlane
和 nodePools[*]
拓撲的 tkr.reference.name
區塊中放置 TKR NAME。
如果 Tanzu Kubernetes 版本在節點集區之間有所不同,則此方法的優點是可供未來版本使用。目前,它們必須相符。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example2 namespace: tkgs-cluster-ns spec: settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55
叢集升級範例 3:使用已過時的散佈欄位
spec.distribution.fullVersion
和
spec.distribution.version
,然後手動移除所有
tkr.reference.name
區塊。您必須包含兩個欄位,其中一個欄位使用 TKR NAME 格式,另一個欄位為 null。不支援版本捷徑,例如
v1.21.2
和
v1.21
。
spec.distribution.version
。
fullVersion
與 TKR NAME 搭配使用,並在
version
欄位中使用 null (空白) 值。會移除所有
tkr.reference.name
項目。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example3a namespace: tkgs-cluster-ns spec: distribution: fullVersion: v1.21.2---vmware.1-tkg.1.ee25d55 version: "" settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium
version
欄位中使用 TKR NAME,並在
fullVersion
欄位中使用 null (空白) 值。即使您使用的是
version
欄位,版本捷徑仍不受支援。會移除所有
tkr.reference.name
項目。
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-update-example3b namespace: tkgs-cluster-ns spec: distribution: fullVersion: "" version: v1.21.2---vmware.1-tkg.1.ee25d55 settings: network: cni: name: antrea pods: cidrBlocks: - 192.0.2.0/16 serviceDomain: cluster.local services: cidrBlocks: - 198.51.100.0/12 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: vwt-storage-policy vmClass: best-effort-medium