節點集區是叢集中具有相同配置的一組節點。叢集中的所有節點都必須屬於節點集區。Google Distributed Cloud 叢集有三種節點集區:控制層、負載平衡器和工作站節點集區。
本頁說明如何檢查工作站節點集區的狀態,以及如何新增、更新及移除工作站節點集區。
選擇管理節點集區的工具
管理節點集區的方式取決於叢集類型,以及使用者叢集是否由 GKE On-Prem API 管理。如果符合下列任一條件,使用者叢集就會由 GKE On-Prem API 管理:
- 叢集是在 Google Cloud 控制台中建立,或是使用 Google Cloud CLI (gcloud CLI) 建立,這會自動設定 GKE On-Prem API 來管理叢集。 
- 叢集是使用 - bmctl建立,但已設定為由 GKE On-Prem API 管理。
如果 GKE On-Prem API 管理使用者叢集,您可以使用主控台或 gcloud CLI 管理節點集區。如果使用者叢集不是由 GKE On-Prem API 管理,請使用管理工作站上的 kubectl 管理節點集區。您也可以使用 kubectl 管理所有可包含工作站節點集區的叢集類型 (混合式、獨立和使用者叢集) 的節點集區。
如果您打算使用 gcloud CLI,請在已安裝 gcloud CLI 的電腦上執行下列操作:
- 使用您的 Google 帳戶登入 - gcloud auth login 
- 更新元件: - gcloud components update 
檢查節點狀態
新增或移除節點集區前,請先檢查節點及其所屬節點集區的狀態。
kubectl
使用 kubectl,您可以取得特定命名空間或整個叢集中的節點狀態。以下範例顯示叢集命名空間 cluster-abm-cluster 中的節點集區狀態:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
系統會傳回類似下列內容的結果:
NAME                    READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
abm-cluster             3       0             0         0                  0
default-pool            2       0             0         0                  0
backup-pool             3       0             0         0                  0
表格中的每個資料欄都代表節點可能處於的不同狀態。表格中的每一列,都是各節點狀態中每個節點集區的節點數量。
新增節點時,節點在佈建期間的初始狀態為 Reconciling。節點加入叢集後,節點狀態會變更為 Ready。
您也可以執行下列指令,檢查叢集中節點的狀態:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
控制台
- 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。 
- 選取使用者叢集所在的 Google Cloud 專案。 
- 在叢集清單中,按一下叢集名稱,然後在「詳細資料」面板中按一下「更多詳細資料」。 
- 按一下「Nodes」(節點) 分頁標籤。 - 畫面上會顯示節點集區清單。 
 
 
gcloud CLI
- 列出叢集中的節點集區: - gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION - 更改下列內容: - USER_CLUSTER_NAME:包含節點集區的使用者叢集名稱。
- FLEET_HOST_PROJECT_ID:叢集建立所在的專案 ID。
- LOCATION:與使用者叢集相關聯的 Google Cloud 位置。
 
- 描述節點集區: - gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION - 將 - NODE_POOL_NAME替換為節點集區的名稱。
如要進一步瞭解如何診斷叢集,請參閱「建立診斷叢集快照」。
新增節點集區
kubectl
將節點集區新增至叢集時,請注意下列規則:
- 管理員叢集可以包含負載平衡器節點集區和控制層節點集區,但不能包含工作站節點集區:嘗試將工作站節點集區新增至管理員叢集會產生錯誤。 
- 叢集只能包含一個控制層節點集區和一個負載平衡器節點集區。您無法在叢集中新增額外的控制層或負載平衡節點集區。 
如要在叢集中新增節點集區,請在叢集中建立新的 nodepools.baremetal.cluster.gke.io 資源。在下列範例中,名為「machine-learning-pool」的新節點集區會新增至資訊清單。新的節點集區包含兩個節點,IP 位址分別為 10.200.0.7 和 10.200.0.8:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: machine-learning-pool
  namespace: cluster-abm-cluster
spec:
  clusterName: abm-cluster
  nodes:
  - address: 10.200.0.7
  - address: 10.200.0.8
  taints:
  - key: TAINT_KEY
    value: TAINT_VALUE
    effect: NoSchedule
  labels:
    key1: LABEL_1
    key2: LABEL_2
將設定儲存在名為 machine-learning-pool.yaml 的檔案中,然後使用下列指令將設定套用至叢集:
kubectl apply -f machine-learning-pool.yaml
在叢集中新增節點集區時,請考量下列事實:
- NodePool.spec.taints和- NodePool.spec.labels設定會協調至節點。系統會移除直接新增至節點的所有汙點和標籤。在同步程序中直接新增的汙點和標籤不會遭到移除。如要略過這個協調步驟,可以為節點加上- baremetal.cluster.gke.io/label-taint-no-sync註解。
- 節點集區資源必須與相關聯的叢集建立在相同的命名空間,且節點集區資源必須在 - spec.clusterName欄位中參照叢集名稱。
控制台
- 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。 
- 選取使用者叢集所在的 Google Cloud 專案。 
- 在叢集清單中,按一下叢集名稱,然後在「詳細資料」面板中按一下「更多詳細資料」。 
- 按一下 「Add Node Pool」(新增節點集區)。 
- 輸入節點集區的名稱。 
- 在「節點位址 1」欄位中,輸入工作站節點機器的 IP 位址。 - 如要新增多個工作站節點機器,請按一下 「新增地址」。 
- 視需要新增 Kubernetes 標籤和/或 Kubernetes 汙點。 
- 點選「建立」。 
節點集區的狀態會顯示在「節點」分頁標籤中。你可能需要重新整理頁面,才能查看最新狀態。
gcloud CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
更改下列內容:
- NODE_POOL_NAME:您為節點集區選用的名稱。名稱必須:- 最多可包含 40 個半形字元
- 只能包含小寫英數字元或連字號 (-)
- 開頭必須是字母字元
- 結尾為英數字元
 
- USER_CLUSTER_NAME:使用者叢集的名稱。
- FLEET_HOST_PROJECT_ID:叢集建立所在的專案 ID。
- LOCATION:您在建立叢集時指定的 Google Cloud 位置。
- NODE_POOL_CONFIG:說明節點集區的設定檔路徑。例如:- nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
您也可以選擇指定下列項目:
- --node-labels=KEY=VALUE,...:以半形逗號分隔的Kubernetes 標籤 (鍵/值組合) 清單,會套用至集區中的每個節點。
- --node-taints=KEY=VALUE:EFFECT,...以半形逗號分隔的 Kubernetes 污點清單
套用至集區中的每個節點。汙點是與效果相關聯的鍵/值組合。Taint 會搭配容許條件用於 Pod 排程。為 EFFECT 指定下列其中一個值:NoSchedule、PreferNoSchedule、NoExecute。
- --validate-only如果您想驗證更新,但不想進行任何變更,請指定這個標記。
更新節點集區
kubectl
如要更新節點集區,請修改叢集中的 nodepools.baremetal.cluster.gke.io 資源。您可以直接使用 kubectl edit 更新資源,也可以更新 YAML 檔案並使用 kubectl apply。
控制台
- 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。 
- 選取使用者叢集所在的 Google Cloud 專案。 
- 在叢集清單中,按一下叢集名稱,然後在「詳細資料」面板中按一下「更多詳細資料」。 
- 按一下「Nodes」(節點) 分頁標籤。 
- 在清單中,按一下要更新的節點集區。 
- 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)。 
- 視需要變更設定,然後按一下「儲存」。 
gcloud CLI
- (選用) 列出叢集中的節點集區,取得要更新的節點集區名稱。 - gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION - 更改下列內容: - USER_CLUSTER_NAME:包含節點集區的使用者叢集名稱。
- FLEET_HOST_PROJECT_ID:叢集建立所在的專案 ID。
- LOCATION:與使用者叢集相關聯的 Google Cloud 位置。
 
- 執行下列指令: - gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE - 更改下列內容: - 將 - NODE_POOL_NAME替換為節點集區的名稱。
- NODE_CONFIG_FILE:說明節點集區的設定檔路徑。例如:
 - nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
您也可以選擇指定下列項目:
- --node-labels=KEY=VALUE,...:以半形逗號分隔的Kubernetes 標籤 (鍵/值組合) 清單,會套用至集區中的每個節點。
- --node-taints=KEY=VALUE:EFFECT,...以逗號分隔的Kubernetes 污點清單, 會套用至集區中的每個節點。汙點是與效果相關聯的鍵/值組合。taint 會搭配容許條件用於 Pod 排程。為 EFFECT 指定下列其中一個值:- NoSchedule、- PreferNoSchedule、- NoExecute。
- --validate-only如果您想驗證更新,但不想進行任何變更,請指定這個標記。
例如:
gcloud container bare-metal node-pools create default-pool \
    --cluster=user-cluster-1  \
    --location=us-west1 \
    --node-configs-from-file=node-pool-config.yaml \
    --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
移除節點集區
kubectl
您可以使用 kubectl delete 移除節點集區。舉例來說,如要移除前一節中新增的節點集區 machine-learning-pool,請使用下列指令:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
請注意,控制層節點集區和負載平衡器節點集區對叢集功能至關重要,因此無法從叢集中移除。
控制台
- 在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。 
- 選取使用者叢集所在的 Google Cloud 專案。 
- 在叢集清單中,按一下叢集名稱,然後在「詳細資料」面板中按一下「更多詳細資料」。 
- 按一下「節點」分頁標籤,然後按一下要刪除的節點集區。 
- 按一下「刪除」圖示 。 
- 在確認對話方塊中,輸入節點集區名稱,然後按一下「確認」。 
gcloud CLI
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
更改下列內容:
- 將 - NODE_POOL_NAME替換為節點集區的名稱。
- USER_CLUSTER_NAME:包含節點集區的使用者叢集名稱。
- FLEET_HOST_PROJECT_ID:叢集建立所在的專案 ID。
- LOCATION:與使用者叢集相關聯的 Google Cloud 位置。
移除叢集中的工作站節點集區可能會導致 Pod 中斷。如果設有 Pod 中斷預算 (PDB),您可能無法移除節點集區。如要進一步瞭解 Pod 中斷政策,請參閱「移除受 Pod 中斷預算封鎖的節點」。
後續步驟
建立節點集區後,如果工作負載需求有變,您可以更新工作站節點集區,新增或移除節點。如要新增或移除工作站節點集區中的節點,請參閱「新增或移除叢集中的節點」。