管理節點集區

節點集區是 Kubernetes 叢集中具有相同配置的一組節點。節點集區會使用 NodePool 規格。集區中的每個節點都具有 Kubernetes 節點標籤,並以節點集區的名稱做為值。根據預設,所有新的節點集區都會執行與控制層相同的 Kubernetes 版本。

建立 Kubernetes 叢集時,您指定的節點數量和類型會建立叢集的第一個節點集區。您可以將其他不同大小和類型的節點集區加入叢集。任何特定節點集區中的所有節點都彼此相同。

當您要排程的 pod 比其他 pod 需要更多資源 (例如更多記憶體或本機磁碟空間) 時,自訂節點集區就非常實用。如要進一步控管 Pod 的排程,可以使用節點 taint。

您可以個別建立及刪除節點集區,而不會影響整個叢集。您無法設定節點集區中的單一節點。任何配置更改都會影響節點集區中的所有節點。

您可以擴大或縮小集區,調整叢集中的節點集區大小。縮減節點集區是自動化程序,可減少集區大小,而 GDC 系統會自動排空並逐出任意節點。縮減節點集區時,您無法選取要移除的特定節點。

事前準備

如要查看及管理 Kubernetes 叢集中的節點集區,您必須具備下列角色:

  • 使用者叢集管理員 (user-cluster-admin)
  • 使用者叢集節點檢視者 (user-cluster-node-viewer)

這類角色不會繫結至命名空間。

新增節點集區

從 GDC 控制台建立 Kubernetes 叢集時,您可以自訂預設節點集區,並在叢集建立初始化前建立其他節點集區。如要將節點集區新增至現有 Kubernetes 叢集,請完成下列步驟:

控制台

  1. 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」
  2. 在叢集清單中點選叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。
  3. 依序選取「節點集區」>「新增節點集區」
  4. 指派節點集區的名稱。節點集區建立後,名稱就無法修改。
  5. 指定要在節點集區中建立的工作站節點數量。
  6. 選取最符合工作負載需求的機器類別,機器類別會顯示在下列設定中:
    • 機型
    • vCPU
    • 記憶體
  7. 按一下 [儲存]

API

  1. 使用互動式編輯器,透過 kubectl CLI 開啟 Cluster 自訂資源規格:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:叢集名稱。
    • MANAGEMENT_API_SERVER:Kubernetes 叢集所在區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱登入一文瞭解詳情。
  2. nodePools 區段中新增項目:

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    更改下列內容:

    • MACHINE_TYPE:節點集區工作站節點的機型。如要查看可設定的項目,請參閱可用的機器類型
    • NODE_POOL_NAME:節點集區的名稱。
    • NUMBER_OF_WORKER_NODES:要在節點集區中佈建的工作站節點數量。
    • TAINTS:要套用至這個節點集區節點的 taint。此為選填欄位。
    • LABELS:要套用至這個節點集區節點的標籤。其中包含鍵/值組合清單。這是選填欄位。
    • GPU_PARTITION_SCHEME:如果您執行 GPU 工作負載,請使用 GPU 分割配置。例如,mixed-2。如果未設定這個欄位,GPU 就不會分割。如要瞭解可用的多執行個體 GPU (MIG) 設定檔,請參閱「支援的 MIG 設定檔」。
  3. 儲存檔案並結束編輯器。

查看節點集區

如要查看 Kubernetes 叢集中的現有節點集區,請完成下列步驟:

控制台

  1. 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」
  2. 在叢集清單中點選叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。
  3. 選取「節點集區」

畫面上會顯示叢集中執行的節點集區清單。您可以在這個頁面管理叢集的節點集區。

API

  • 查看特定 Kubernetes 叢集的節點集區:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    輸出結果會與下列內容相似:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

刪除節點集區

刪除節點集區也會一併刪除節點與節點路徑,這些節點會撤銷並重新排定在節點上執行的任何 Pod。如果 Pod 具有特定的節點選取器,當叢集中沒有其他節點能滿足條件時,Pod 可能會保持無法排程的狀態。

刪除節點集區前,請確認您至少有三個工作站節點,確保叢集有足夠的運算空間可有效執行。

如要刪除節點集區,請完成下列步驟:

主控台

  1. 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」

  2. 按一下要刪除節點集區的叢集。

  3. 選取「節點集區」

  4. 按一下要刪除的節點集區旁的「刪除」

API

  1. 使用互動式編輯器,透過 kubectl CLI 開啟 Cluster 自訂資源規格:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:叢集名稱。
    • MANAGEMENT_API_SERVER:Kubernetes 叢集所在區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱登入一文瞭解詳情。
  2. nodePools 區段中移除節點集區項目。舉例來說,在下列程式碼片段中,您必須移除 machineTypeNamenamenodeCount 欄位:

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    請務必移除要刪除節點集區的所有欄位。

  3. 儲存檔案並結束編輯器。