本主題說明如何使用以下方法調整 Tanzu Kubernetes Grid (TKG) 工作負載叢集和獨立管理叢集:
Autoscaler:對於由獨立管理叢集部署的工作負載叢集,您可以使用 Cluster Autoscaler 自動調整工作節點的數量以滿足需求。請參閱使用 Cluster Autoscaler 來調整工作節點。
您無法使用 Autoscaler 來調整主管叢集所部署的工作負載叢集。
水平調整:對於工作負載或獨立管理叢集,您可以手動調整控制平面和工作節點的數量。請參閱水平調整叢集。
垂直調整:對於工作負載叢集,您可以手動變更控制平面和工作節點的大小。請參閱垂直調整叢集。
附註若要調整節點集區中的節點,請參閱管理不同虛擬機器類型的節點集區中的更新節點集區。
Cluster Autoscaler 是一個 Kubernetes 程式,可根據工作負載叢集上的需求,自動調整 Kubernetes 叢集。Cluster Autoscaler 只會用於由獨立管理叢集所部署的工作負載叢集。
如需 Cluster Autoscaler 的詳細資訊,請參閱 GitHub 中的下列說明文件:
依預設,Cluster Autoscaler 在 Tanzu Kubernetes Grid 中是停用的。若要在工作負載叢集中啟用 Cluster Autoscaler,請在執行 tanzu cluster create --file
之前,將 ENABLE_AUTOSCALER
設定為 true
,並在叢集組態檔中設定 AUTOSCALER_
選項,或設定為環境變數。
重要對於以類別為基礎的叢集,由於叢集 API 中的標籤傳播問題,在建立以類別為基礎的工作負載叢集後,您必須手動將
min-size
和max-size
註解新增到其MachineDeployment
物件,以啟用 Cluster Autoscaler,如下面的〈手動新增大小下限和上限註解〉[ #cc-workaround] 中所述。
叢集組態檔中的每個 Cluster Autoscaler 組態變數都會對應至 Cluster Autoscaler 工具中的一個參數。如需這些變數及其預設值的清單,請參閱〈組態檔變數參考〉中的 Cluster Autoscaler。
AUTOSCALER_*_SIZE
設定會限制叢集中的工作節點數目,而 AUTOSCALER_MAX_NODES_TOTAL
會限制所有節點 (工作節點和控制平面) 的計數。
根據叢集中的工作節點數目,來設定 AUTOSCALER_*_SIZE
值:
dev
叢集),請設定 AUTOSCALER_MIN_SIZE_0
和 AUTOSCALER_MAX_SIZE_0
。prod
叢集),請設定:
AUTOSCALER_MIN_SIZE_0
和 AUTOSCALER_MAX_SIZE_0
AUTOSCALER_MIN_SIZE_1
和 AUTOSCALER_MAX_SIZE_1
AUTOSCALER_MIN_SIZE_2
和 AUTOSCALER_MAX_SIZE_2
以下提供叢集組態檔中的 Cluster Autoscaler 設定範例。部署叢集後,就無法變更以下值。
#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:
對於您所建立並啟用了 Cluster Autoscaler 的每一個工作負載叢集,Tanzu Kubernetes Grid 會在管理叢集中建立 Cluster Autoscaler 部署。若要停用 Cluster Autoscaler,請刪除與工作負載叢集相關聯的 Cluster Autoscaler 部署。
在您建立以類別為基礎的工作負載叢集,並啟用 Cluster Autoscaler 後,由於叢集 API 中的標籤傳播問題,您必須手動將 min-size
和 max-size
註解新增至其 MachineDeployment
物件,如下所示:
將 kubectl
的內容設定為管理叢集:
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
其中,MY-MGMT-CLUSTER
是管理叢集的名稱。
列出 MachineDeployment
物件,並記下其 AGE
值:
kubectl get md
物件名稱以 -md
結尾,後面跟著每個可用性區域 (AZ) 的號碼。
針對叢集中每一個新建的 MachineDeployment
:
新增 min-size
註解:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
其中:
MD-NAME
是 MachineDeployment
物件的名稱,例如 my-wc-md-0
MIN-SIZE
是 AZ 的 AUTOSCALER_MIN_SIZE_*
值,例如,對於部署到第一個 AZ 的 *-md0
,其值為 AUTOSCALER_MIN_SIZE_0
。新增 max-size
註解:
kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
其中,MAX-SIZE
是 AZ 的最大 MachineDeployment
節點計數,如上所述。
視叢集類型而定,您可以採用兩種方式來水平調整 TKG 叢集:
replicas
設定,如以下調整以類別為基礎的叢集小節中所述。若要使用 Tanzu CLI 水平調整工作負載或獨立管理叢集,請執行 tanzu cluster scale
命令。
重要當 Tanzu Kubernetes Grid 作業正在執行期間,請勿變更內容或編輯
.kube-tkg/config
檔案。
--controlplane-machine-count
和 --worker-machine-count
選項分別會設定新的控制平面和工作節點數目。範例:
若要將叢集調整成 5 個控制平面節點和 10 個工作節點,請輸入:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
如果您使用 --controlplane-machine-count 1
來部署叢集,然後將其垂直擴充成 3 個控制平面節點,Tanzu Kubernetes Grid 會在控制平面上自動啟用堆疊 HA。
如果叢集正在 default
以外的命名空間中執行,您必須包含 --namespace
選項:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
具有獨立管理叢集的 vSphere:在部署了獨立管理叢集的 vSphere 上,當變更叢集的節點計數後,必須保留或釋放任何已新增或已移除節點的 IP 位址的 DHCP 保留。要手動更改這些保留,請參閱設定節點 DHCP 保留和端點 DNS 記錄 (僅限 vSphere)。如需如何設定 DHCP 保留的相關指示,請參閱 DHCP 伺服器說明文件。
具有主管叢集的 vSphere:在執行於 vSphere with Tanzu 中的叢集上,您只能執行 1 個控制平面節點或 3 個控制平面節點。您可以將控制平面節點數從 1 垂直擴充成 3,但無法將該數值從 3 垂直縮減為 1。
垂直調整工作負載叢集的程序,取決於叢集類型。
遵循《叢集 API 手冊》中的更新基礎結構機器範本程序,來變更叢集的機器範本。
此程序會使用 kubectl get
命令,來下載叢集的現有機器範本,您可以依如下所示來建構該命令:
kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml
其中:
MACHINE-TEMPLATE-TYPE
為:
VsphereMachineTemplate
(若為 vSphere)AWSMachineTemplate
(若為 Amazon Web Services (AWS))AzureMachineTemplate
(若為 Azure)MACHINE-TEMPLATE-NAME
是您要調整的叢集節點的機器範本名稱,其形式如下:
CLUSTER-NAME-control-plane
代表控制平面節點CLUSTER-NAME-worker
代表工作節點例如:
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
若要垂直調整以類別為基礎的叢集,請變更叢集定義中的 machine
設定,如以下調整以類別為基礎的叢集中所述。
若要使用以類別為基礎的叢集的 topology
組態,來水平或垂直調整該叢集,請執行下列動作:
將 kubectl
設定為管理叢集的內容,例如:
kubectl config use-context management-cluster@admin
執行 kubectl edit cluster CLUSTER-NAME
,並在 controlPlane
和 worker
下,編輯其 topology
區塊中的設定。
若要水平調整,請變更 replicas
設定。- 若要垂直調整,請變更 machine
下的設定。
例如:
- name: controlPlane
value:
replicas: 3
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4
- name: worker
value:
replicas: 5
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4