調整叢集

本主題說明如何使用以下方法調整 Tanzu Kubernetes Grid (TKG) 工作負載叢集和獨立管理叢集:

  • Autoscaler:對於由獨立管理叢集部署的工作負載叢集,您可以使用 Cluster Autoscaler 自動調整工作節點的數量以滿足需求。請參閱使用 Cluster Autoscaler 來調整工作節點

    您無法使用 Autoscaler 來調整主管叢集所部署的工作負載叢集。

  • 水平調整:對於工作負載或獨立管理叢集,您可以手動調整控制平面和工作節點的數量。請參閱水平調整叢集

  • 垂直調整:對於工作負載叢集,您可以手動變更控制平面和工作節點的大小。請參閱垂直調整叢集

附註

若要調整節點集區中的節點,請參閱管理不同虛擬機器類型的節點集區中的更新節點集區

使用 Cluster 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-sizemax-size 註解新增到其 MachineDeployment 物件,以啟用 Cluster Autoscaler,如下面的〈手動新增大小下限和上限註解〉[ #cc-workaround] 中所述。

叢集組態檔中的每個 Cluster Autoscaler 組態變數都會對應至 Cluster Autoscaler 工具中的一個參數。如需這些變數及其預設值的清單,請參閱〈組態檔變數參考〉中的 Cluster Autoscaler

AUTOSCALER_*_SIZE 設定會限制叢集中的工作節點數目,而 AUTOSCALER_MAX_NODES_TOTAL 會限制所有節點 (工作節點和控制平面) 的計數。

根據叢集中的工作節點數目,來設定 AUTOSCALER_*_SIZE 值:

  • 對於具有單一工作節點的叢集 (例如 dev 叢集),請設定 AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0
  • 對於具有多個工作節點的叢集 (例如 prod 叢集),請設定:
    • AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0
    • AUTOSCALER_MIN_SIZE_1AUTOSCALER_MAX_SIZE_1
    • AUTOSCALER_MIN_SIZE_2AUTOSCALER_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-sizemax-size 註解新增至其 MachineDeployment 物件,如下所示:

  1. kubectl 的內容設定為管理叢集:

    kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
    

    其中,MY-MGMT-CLUSTER 是管理叢集的名稱。

  2. 列出 MachineDeployment 物件,並記下其 AGE 值:

    kubectl get md
    

    物件名稱以 -md 結尾,後面跟著每個可用性區域 (AZ) 的號碼。

  3. 針對叢集中每一個新建的 MachineDeployment

    1. 新增 min-size 註解:

      kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
      

      其中:

      • MD-NAMEMachineDeployment 物件的名稱,例如 my-wc-md-0
      • MIN-SIZE 是 AZ 的 AUTOSCALER_MIN_SIZE_* 值,例如,對於部署到第一個 AZ 的 *-md0,其值為 AUTOSCALER_MIN_SIZE_0
    2. 新增 max-size 註解:

      kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
      

      其中,MAX-SIZE 是 AZ 的最大 MachineDeployment 節點計數,如上所述。

水平調整叢集

視叢集類型而定,您可以採用兩種方式來水平調整 TKG 叢集:

  • 所有叢集:使用 Tanzu CLI,如下所述
  • 以類別為基礎的工作負載叢集:變更叢集定義中的 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。

垂直調整叢集

垂直調整工作負載叢集的程序,取決於叢集類型。

TKC 和以計劃為基礎的叢集

遵循《叢集 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 組態,來水平或垂直調整該叢集,請執行下列動作:

  1. kubectl 設定為管理叢集的內容,例如:

    kubectl config use-context management-cluster@admin
    
  2. 執行 kubectl edit cluster CLUSTER-NAME,並在 controlPlaneworker 下,編輯其 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
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon