可以透過變更節點數目水平調整 Tanzu Kubernetes 叢集,或透過變更主控節點的虛擬機器類別垂直調整該叢集。
支援的調整作業
節點 | 水平擴充 | 水平縮小 | 垂直調整 | 磁碟區縮放 |
---|---|---|---|---|
控制平面 | 是 | 否 | 是 | 否 |
Worker | 是 | 是 | 是 | 是 |
- 垂直調整叢集節點時,由於缺少可用資源,工作負載可能已無法在節點上執行。因此,水平調整可能是慣用方法。
- 虛擬機器類別是不可變的。如果在編輯 Tanzu Kubernetes 叢集所使用的虛擬機器類別後對該叢集進行擴充,則新的叢集節點會使用更新的類別定義,但現有叢集節點會繼續使用初始類別定義,從而造成不相符情況。請參閱Tanzu Kubernetes 叢集的虛擬機器類別。
- Worker 節點磁碟區在佈建後可以變更,但控制平面節點磁碟區不能。
調整必要條件:設定 Kubectl 編輯
若要縮放 Tanzu Kubernetes 叢集,請使用命令 kubectl edit tanzukubernetescluster/CLUSTER-NAME
更新叢集資訊清單。kubectl edit 命令會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟叢集資訊清單。如需設定環境變數的相關指示,請參閱為 Kubectl 指定預設文字編輯器。
kubectl
報告已成功記錄編輯,並且將透過變更來更新叢集。
kubectl edit tanzukubernetescluster/tkgs-cluster-1 tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
kubectl edit tanzukubernetescluster/tkgs-cluster-1 Edit cancelled, no changes made.
擴充控制平面
- 使用 主管叢集 進行驗證。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 將內容切換至執行 Tanzu Kubernetes 叢集所在的 vSphere 命名空間。
kubectl config use-context tkgs-cluster-ns
- 列出命名空間中正在執行的 Kubernetes 叢集。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 取得目標叢集中正在執行的節點數目。
kubectl get tanzukubernetescluster tkgs-cluster-1
例如,以下叢集具有 1 個控制平面節點和 3 個 worker 節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 1 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- 載入叢集資訊清單,以使用
kubectl edit
命令進行編輯。kubectl edit tanzukubernetescluster/tkgs-cluster-1
叢集資訊清單會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟。
- 找到
spec.topology.controlPlane.count
參數,並將節點數目從 1 個增加到 3 個。... controlPlane: replicas: 1 ...
... ControlPlane: replicas: 3 ...
- 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。
儲存檔案時,kubectl 會將變更套用至叢集。在背景中,主管叢集 上的 虛擬機器服務 會佈建新的工作節點。
- 確認是否已新增節點。
kubectl get tanzukubernetescluster tkgs-cluster-1
擴充的控制平面現在有 3 個節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
擴充 Worker 節點
可以透過使用 kubectl 增加 worker 節點數目來擴充 Tanzu Kubernetes 叢集。
- 使用 主管叢集 進行驗證。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 將內容切換至執行 Tanzu Kubernetes 叢集所在的 vSphere 命名空間。
kubectl config use-context tkgs-cluster-ns
- 列出命名空間中正在執行的 Kubernetes 叢集。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 取得目標叢集中正在執行的節點數目。
kubectl get tanzukubernetescluster tkgs-cluster-1
例如,以下叢集具有 3 個控制平面節點和 3 個 worker 節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- 載入叢集資訊清單,以使用
kubectl edit
命令進行編輯。kubectl edit tanzukubernetescluster/tkgs-cluster-1
叢集資訊清單會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟。
- 找到
spec.topology.workers.count
參數並增加節點數目。... workers: replicas: 3 ...
... workers: replicas: 4 ...
- 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。
儲存檔案時,kubectl 會將變更套用至叢集。在背景中,主管叢集 上的 虛擬機器服務 會佈建新的工作節點。
- 確認是否已新增 worker 節點。
kubectl get tanzukubernetescluster tkgs-cluster-1
擴充後,叢集有 4 個 worker 節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
縮小 Worker 節點
可以透過減少 worker 節點數目來縮小 Tanzu Kubernetes 叢集。不支援縮小控制平面。
- 使用 主管叢集 進行驗證。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 將內容切換至執行 Tanzu Kubernetes 叢集所在的 vSphere 命名空間。
kubectl config use-context tkgs-cluster-ns
- 列出命名空間中正在執行的 Kubernetes 叢集。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 取得目標叢集中正在執行的節點數目。
kubectl get tanzukubernetescluster tkgs-cluster-1
例如,以下叢集具有 3 個控制平面節點和 4 個 worker 節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- 載入叢集資訊清單,以使用
kubectl edit
命令進行編輯。kubectl edit tanzukubernetescluster/tkgs-cluster-1
叢集資訊清單會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟。
- 找到
spec.topology.workers.count
參數並減少節點數目。... workers: replicas: 4 ...
... workers: replicas: 2 ...
- 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。
儲存檔案時,kubectl 會將變更套用至叢集。在背景中,主管叢集 上的 虛擬機器服務 會佈建新的工作節點。
- 確認是否已移除 worker 節點。
kubectl get tanzukubernetescluster tkgs-cluster-1
縮小後,叢集有 2 個 worker 節點。NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 2 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
垂直調整叢集
可以透過變更用於主控叢集節點的虛擬機器類別來垂直調整 Tanzu Kubernetes 叢集。控制平面和 worker 節點均支援垂直調整。
Tanzu Kubernetes Grid 服務 支援透過服務內建的輪流更新機制垂直調整叢集節點。如果變更 VirtualMachineClass
定義,則服務會推出具有該新類別的新節點,並停止舊節點。請參閱更新 Tanzu Kubernetes 叢集。
- 使用 主管叢集 進行驗證。
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 將內容切換至執行 Tanzu Kubernetes 叢集所在的 vSphere 命名空間。
kubectl config use-context tkgs-cluster-ns
- 列出命名空間中正在執行的 Kubernetes 叢集。
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 說明目標 Tanzu Kubernetes 叢集並檢查虛擬機器類別。
kubectl describe tanzukubernetescluster tkgs-cluster-2
例如,以下叢集使用的是 best-effort-medium 虛擬機器類別。
Spec: ... Topology: Control Plane: Class: best-effort-medium ... nodePool-a1: Class: best-effort-medium ...
- 列出並說明可用的虛擬機器類別。
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
- 開啟以編輯目標叢集資訊清單。
kubectl edit tanzukubernetescluster/tkgs-cluster-2
叢集資訊清單會在 KUBE_EDITOR 或 EDITOR 環境變數所定義的文字編輯器中開啟。
- 變更虛擬機器類別以編輯資訊清單。
例如,編輯叢集資訊清單,以對控制平面和 worker 節點使用
guaranteed-large
虛擬機器類別。spec: topology: controlPlane: class: guaranteed-large ... nodePool-a1: class: guaranteed-large ...
- 若要套用變更,請在文字編輯器中儲存該檔案。若要取消,請關閉編輯器而無需儲存。
儲存檔案時,kubectl 會將變更套用至叢集。在背景中,Tanzu Kubernetes Grid 服務會佈建新節點並刪除舊節點。如需輪流更新程序的說明,請參閱關於 Tanzu Kubernetes Grid 服務 叢集更新。
- 確認叢集是否已更新。
kubectl get tanzukubernetescluster NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
縮放節點磁碟區
在節點的 Tanzu Kubernetes 叢集規格中,您可以選擇宣告一或多個持續性磁碟區。宣告節點磁碟區對於頻繁變換的元件非常有用,例如控制平面上的 ectd 資料庫和 worker 節點上的容器執行階段。下面提供了宣告這兩個節點磁碟區的叢集規格摘要,以供參考。(完整的範例叢集規格可從此處取得。)
磁碟區節點 | 說明 |
---|---|
允許變更 worker 節點磁碟區。 |
佈建
Tanzu Kubernetes 叢集後,可以新增或更新 worker 節點磁碟區。起始輪流更新時,叢集將使用新磁碟區或變更的磁碟區進行更新。
警告: 如果使用新磁碟區或變更的磁碟區擴展 worker 節點,則在輪流更新期間將刪除目前磁碟區中的資料。
|
不允許變更控制平面節點磁碟區。 | 佈建 Tanzu Kubernetes 叢集後,無法新增或更新控制平面節點磁碟區。Kubernetes 叢集 API (CAPI) 禁止對 spec.toplogy.controlPlane.volumes 進行建立後變更。如果在建立叢集後嘗試新增或變更控制平面磁碟區,請求將遭拒,並顯示錯誤訊息 [不允許更新不可變欄位]。 |
spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-large storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi