管理節點集區

建立 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:要套用至這個節點集區節點的污點。此為選填欄位。
    • 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. 儲存檔案並結束編輯器。

後續步驟