節點集區是叢集中具有相同配置的一組節點。叢集中的所有節點都必須屬於節點集區。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 清單
套用至集區中的每個節點。汙點是與效果相關聯的鍵/值組合。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 中斷預算封鎖的節點」。
後續步驟
建立節點集區後,如果工作負載需求有變,您可以更新工作站節點集區來新增或移除節點。如要新增或移除工作站節點集區中的節點,請參閱「新增或移除叢集中的節點」。