管理節點集區

建立 Google Distributed Cloud (GDC) 實體隔離 Kubernetes 叢集時,您指定的節點數量和類型會建立叢集的第一個節點集區。當現有叢集的運算需求改變時,您可以執行下列節點集區工作:

如要進一步瞭解叢集中的節點集區,請參閱「關於節點」。

本文適用對象為應用程式操作員群組中的應用程式開發人員,以及平台管理員群組中的 IT 管理員,負責管理組織內的 Kubernetes 叢集。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

如要完成本文件中的工作,您必須要求必要權限並準備環境。

要求 IAM 角色

您必須具備特定角色,才能取得管理 Kubernetes 叢集中節點集區所需的權限。您需要的角色取決於您是在組織範圍的共用叢集,還是在專案範圍的標準叢集內工作。詳情請參閱「Kubernetes 叢集設定」。

共用叢集角色

如要建立、刪除、編輯或查看共用叢集的節點集區,請與 IAM 機構組織管理員聯絡,要求取得使用者叢集管理員 (user-cluster-admin) 角色。這個角色未繫結至命名空間。

標準叢集角色

請與 IAM 專案管理員聯絡,要求下列角色:

  • 標準叢集管理員 (standard-cluster-admin):建立、刪除、編輯或查看標準叢集的節點集區。

  • 叢集開發人員 (cluster-developer):建立、刪除、編輯或查看標準叢集。必須具備這個角色,才能透過 GDC 控制台查看叢集的節點集區詳細資料。

這些角色會繫結至專案命名空間。

準備環境

如要使用 API 對 Kubernetes 叢集執行指令,請確認您具備下列資源:

  • 找出 Kubernetes 叢集名稱,或向平台管理員群組成員詢問叢集名稱。

  • 請使用 Kubernetes 叢集名稱取代這些操作說明中的 KUBERNETES_CLUSTER_NAME。

  • 登入並產生 Kubernetes 叢集的 Management API 伺服器 kubeconfig 檔案。

  • 請使用 Management API 伺服器的 kubeconfig 路徑,取代這些操作說明中的 MANAGEMENT_API_SERVER。

新增節點集區

如要將節點集區新增至現有的 Kubernetes 叢集,請完成下列步驟:

控制台

  1. 在專案挑選器中,選取專案或組織。

    標準叢集的範圍為專案,共用叢集的範圍則為組織。選取正確的範圍,即可查看適當的 Kubernetes 叢集類型。

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

  3. 在叢集清單中,按一下叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。

  4. 依序選取「Node pools」(節點集區) >「Add node pool」(新增節點集區)。

  5. 為節點集區命名。節點集區建立後即無法修改名稱。

  6. 指定要在節點集區中建立的 worker 節點數量。

  7. 請依據工作負載需求,選取最合適的機器類別。機器類別會顯示在下列設定中:

    • 機型
    • vCPU
    • 記憶體
  8. 按一下 [儲存]。

API

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

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

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:叢集名稱。
    • KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用 platform 命名空間。如果是標準叢集,請使用叢集的專案命名空間。
    • MANAGEMENT_API_SERVER:託管 Kubernetes 叢集的可用區 API 伺服器 kubeconfig 路徑。
  2. 在 nodePools 區段中新增項目:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    更改下列內容:

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

查看節點集區

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

控制台

  1. 在專案挑選器中,選取專案或組織。

    標準叢集的範圍為專案,共用叢集的範圍則為組織。選取正確的範圍,即可查看適當的 Kubernetes 叢集類型。

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

  3. 在叢集清單中,按一下叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。

  4. 選取「節點集區」。

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

API

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

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

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:叢集名稱。
    • KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用 platform 命名空間。如果是標準叢集,請使用叢集的專案命名空間。

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

    [
      {
        "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
      }
    ]
    

調整節點集區大小

您可以手動調整 Kubernetes 叢集中的節點集區大小,方法是向上或向下調整集區。縮減節點集區時,無法選取要移除的特定節點。

如要調整現有叢集中的節點集區資源配置,請完成下列步驟:

控制台

  1. 在專案挑選器中,選取專案或組織。

    標準叢集的範圍為專案,共用叢集的範圍則為組織。選取正確的範圍,即可查看適當的 Kubernetes 叢集類型。

  2. 在資訊主頁中,選取要編輯的叢集所在的專案。

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

  4. 選取與節點集區相關聯的叢集名稱。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。

  5. 按一下「Node pools」(節點集區) 分頁標籤。

  6. 選取要調整大小的節點集區,然後按一下「Edit」(編輯) 圖示 。系統會顯示「Edit node pool」(編輯節點集區) 提示。

  7. 更新「Number of nodes」(節點數量) 欄位,反映節點集區所需的新節點數量。您可以依據工作負載需求,增加或減少節點數量。

  8. 按一下 [儲存]。

  9. 返回叢集的「Node pools」(節點集區) 分頁,確認調整大小後的節點集區狀態為 Ready,且節點數量正確。節點集區可能需要幾分鐘才能縮放至您指定的規模。

    使用控制台確認節點集區已就緒。

API

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

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

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:託管節點集區的叢集名稱。
    • KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用 platform 命名空間。如果是標準叢集,請使用叢集的專案命名空間。
    • MANAGEMENT_API_SERVER:託管 Kubernetes 叢集的可用區 API 伺服器 kubeconfig 路徑。
  2. 更新要調整大小的節點集區 nodeCount 欄位:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    將 NUMBER_OF_WORKER_NODES 替換為要在節點集區中佈建的 worker 節點更新數量。

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

  4. 檢查節點集區的設定,確認節點已完成資源調度:

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

    確認 readyNodes 數字反映您為節點集區設定的節點數量。節點集區可能需要幾分鐘才能縮放至您指定的規模。

刪除節點集區

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

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

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

控制台

  1. 在專案挑選器中,選取專案或組織。

    標準叢集的範圍為專案,共用叢集的範圍則為組織。選取正確的範圍,即可查看適當的 Kubernetes 叢集類型。

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

  3. 按一下託管要刪除節點集區的叢集。

  4. 選取「節點集區」。

  5. 按一下要刪除的節點集區旁的 「Delete」(刪除)。

API

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

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

    更改下列內容:

    • KUBERNETES_CLUSTER_NAME:叢集名稱。
    • KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用 platform 命名空間。如果是標準叢集,請使用叢集的專案命名空間。
    • MANAGEMENT_API_SERVER:託管 Kubernetes 叢集的可用區 API 伺服器 kubeconfig 路徑。
  2. 從 nodePools 區段中移除節點集區項目。舉例來說,在下列程式碼片段中,您必須移除 machineTypeName、name 和 nodeCount 欄位:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

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

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

後續步驟