節點集區是 Kubernetes 叢集中具有相同配置的一組節點。節點集區會使用 NodePool
規格。集區中的每個節點都具有 Kubernetes 節點標籤,並以節點集區的名稱做為值。根據預設,所有新的節點集區都會執行與控制層相同的 Kubernetes 版本。
建立 Kubernetes 叢集時,您指定的節點數量和類型會建立叢集的第一個節點集區。您可以將其他不同大小和類型的節點集區加入叢集。任何特定節點集區中的所有節點都彼此相同。
當您要排程的 pod 比其他 pod 需要更多資源 (例如更多記憶體或本機磁碟空間) 時,自訂節點集區就非常實用。如要進一步控管 Pod 的排程,可以使用節點 taint。
您可以個別建立及刪除節點集區,而不會影響整個叢集。您無法設定節點集區中的單一節點。任何配置更改都會影響節點集區中的所有節點。
您可以擴大或縮小集區,調整叢集中的節點集區大小。縮減節點集區是自動化程序,可減少集區大小,而 GDC 系統會自動排空並逐出任意節點。縮減節點集區時,您無法選取要移除的特定節點。
事前準備
如要查看及管理 Kubernetes 叢集中的節點集區,您必須具備下列角色:
- 使用者叢集管理員 (
user-cluster-admin
) - 使用者叢集節點檢視者 (
user-cluster-node-viewer
)
這類角色不會繫結至命名空間。
新增節點集區
從 GDC 控制台建立 Kubernetes 叢集時,您可以自訂預設節點集區,並在叢集建立初始化前建立其他節點集區。如要將節點集區新增至現有 Kubernetes 叢集,請完成下列步驟:
控制台
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中點選叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。
- 依序選取「節點集區」>「新增節點集區」。
- 指派節點集區的名稱。節點集區建立後,名稱就無法修改。
- 指定要在節點集區中建立的工作站節點數量。
- 選取最符合工作負載需求的機器類別,機器類別會顯示在下列設定中:
- 機型
- vCPU
- 記憶體
- 按一下 [儲存]。
API
使用互動式編輯器,透過
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 檔案,請參閱登入一文瞭解詳情。
在
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 設定檔」。
儲存檔案並結束編輯器。
查看節點集區
如要查看 Kubernetes 叢集中的現有節點集區,請完成下列步驟:
控制台
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中點選叢集。系統隨即會顯示「Cluster details」(叢集詳細資料) 頁面。
- 選取「節點集區」。
畫面上會顯示叢集中執行的節點集區清單。您可以在這個頁面管理叢集的節點集區。
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 可能會保持無法排程的狀態。
刪除節點集區前,請確認您至少有三個工作站節點,確保叢集有足夠的運算空間可有效執行。
如要刪除節點集區,請完成下列步驟:
主控台
在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
按一下要刪除節點集區的叢集。
選取「節點集區」。
按一下要刪除的節點集區旁的「刪除」delete。
API
使用互動式編輯器,透過
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 檔案,請參閱登入一文瞭解詳情。
從
nodePools
區段中移除節點集區項目。舉例來說,在下列程式碼片段中,您必須移除machineTypeName
、name
和nodeCount
欄位:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3
請務必移除要刪除節點集區的所有欄位。
儲存檔案並結束編輯器。