Google Distributed Cloud (GDC) 實體隔離方案可讓您在建立 Kubernetes 叢集後,使用 GKE on GDC 管理叢集。這項服務可讓您因應不斷變化的容器工作負載需求。
事前準備
如要查看及管理 Kubernetes 叢集中的節點集區,您必須具備下列角色:
- 使用者叢集管理員 (
user-cluster-admin) - 使用者叢集節點檢視者 (
user-cluster-node-viewer)
這類角色不會繫結至命名空間。
如要對 Kubernetes 叢集執行指令,請確認您具備下列資源:
找出 Kubernetes 叢集名稱,或詢問平台管理員叢集名稱。
如果沒有 Kubernetes 叢集的 kubeconfig 檔案,請登入並產生該檔案。
請使用 Kubernetes 叢集的 kubeconfig 路徑,替換這些操作說明中的
KUBERNETES_CLUSTER_KUBECONFIG。
執行節點維護作業
如要維修或維護節點,請先將節點設為維護模式。如將節點設為維護模式,系統會以安全的方式清空 Pod 和工作負載,並從 Pod 排程中排除節點。在維護模式下,您可以處理節點,而且不會有 Pod 流量中斷的風險。
運作方式
GDC 的維護模式與針對特定節點執行 kubectl
cordon 和 kubectl drain 類似。以下是與維護模式相關的幾項詳細資訊:
- 系統會將指定的節點標示為不可排程。這項操作由
kubectl cordon執行。 - 系統會將節點 taint 新增至指定節點,表示節點上無法排程或執行任何 Pod。這項操作與
kubectl drain類似。 - 系統會強制執行 20 分鐘的逾時設定,確保節點不會因等待 Pod 終止而停滯。如果 Pod 設定為容許所有汙點,或有終結器,可能不會終止。GDC 叢集會嘗試終止所有 Pod,但如果超過逾時時間,節點就會進入維護模式。這項逾時設定可避免執行中的 Pod 阻礙升級。
- 如果節點上執行以 VM 為基礎的工作負載,GDC 叢集會將
NodeSelector套用至虛擬機器執行個體 (VMI) Pod,然後停止該 Pod。NodeSelector可確保節點從維護模式移除時,VMI Pod 會在同一節點上重新啟動。
讓節點進入維護模式
在叢集設定檔的 maintenanceBlocks 區段中,為所選節點指定 IP 位址範圍,選擇要進入維護模式的節點。所選節點必須處於 Ready 狀態,且在叢集中運作。
如要讓節點進入維護模式,請按照下列步驟操作:
編輯叢集設定檔,選取要進入維護模式的節點。
您可以使用所選的編輯器編輯設定檔,也可以執行下列指令,直接編輯叢集自訂資源:
kubectl edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG請替換 Kubernetes 叢集的下列項目:
KUBERNETES_CLUSTER_NAME:叢集名稱。KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。KUBERNETES_CLUSTER_KUBECONFIG:kubeconfig 檔案的路徑。
套用叢集設定後,叢集會將適用的節點設為維護模式。
將
maintenanceBlocks區段新增至叢集設定檔,為要進入維護模式的節點指定單一 IP 位址或位址範圍。下列範例說明如何指定 IP 位址範圍,選取多個節點:
... metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64 ...取得叢集中節點的狀態:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG回應內容如下所示:
NAME STATUS ROLES AGE VERSION user-gdc-01 Ready master 2d22h v1.23.5-gke.1502 user-gdc-04 Ready none 2d22h v1.23.5-gke.1502 user-gdc-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdc-06 Ready none 2d22h v1.23.5-gke.1502SchedulingDisabled狀態表示節點處於維護模式。取得處於維護模式的節點數量:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG回應類似下列輸出內容:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0這個範例中的
UNDERMAINTENANCE欄顯示一個節點處於維護模式。叢集也會在節點進入維護模式時,將下列汙點新增至節點:
baremetal.cluster.gke.io/maintenance:NoExecutebaremetal.cluster.gke.io/maintenance:NoSchedule
調整節點集區大小
GDC 環境中的任何 Kubernetes 叢集都可以調整節點集區大小,以因應工作負載變化。如要管理 Kubernetes 叢集中的節點集區,您必須具備使用者叢集管理員 (user-cluster-admin) 角色。這個角色不會繫結至命名空間。
如要調度現有叢集中的節點集區,請完成下列步驟:
主控台
- 在資訊主頁中,選取要編輯的叢集所在專案。
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 選取節點集區相關聯的叢集名稱。「叢集詳細資料」頁面隨即顯示。
- 按一下「節點集區」分頁標籤。
- 選取要調整大小的節點集區的「編輯」edit圖示,系統會顯示「編輯節點集區」提示。
更新「節點數量」欄位,反映節點集區中所需的新節點數量。您可以增加或減少節點數量,以符合工作負載需求。
按一下 [儲存]。
返回叢集的「節點集區」分頁,確認調整大小後的節點集區狀態為
Ready,且節點數量正確無誤。節點集可能需要幾分鐘的時間,才能根據您的規格進行調整。
API
使用互動式編輯器,透過
kubectlCLI 開啟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 檔案,請參閱登入一文瞭解詳情。
更新要調整大小的節點集區的
nodeCount欄位:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES將
NUMBER_OF_WORKER_NODES換成要在節點集區中佈建的更新工作站節點數量。儲存檔案並結束編輯器。
檢查節點集區的設定,確認節點擴縮作業已完成:
kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatuses確認
readyNodes數字反映您為節點集區設定的節點數量。節點集區可能需要幾分鐘的時間,才能按照您的規格調整大小。
在專案階層中移動叢集
專案會提供服務執行個體的邏輯分組。您可以從 GDC 專案階層新增及移除 Kubernetes 叢集,適當分組服務。
將專案附加至叢集
從 GDC 控制台建立叢集時,您必須先附加至少一個專案,才能順利將容器工作負載部署至叢集。如要將其他專案新增至現有叢集,請完成下列步驟:
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中按一下叢集,開啟「叢集詳細資料」頁面。
- 選取「附加專案」。
- 從專案清單中選取要新增的可用專案。按一下「Save」(儲存)。
將專案從叢集卸離
如要將專案從現有 Kubernetes 叢集分離,請完成下列步驟:
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中按一下叢集,開啟「叢集詳細資料」頁面。
按一下「中斷連結」delete,中斷專案與叢集的連結。
查看機構中的所有叢集
您可以查看機構中的所有可用 Kubernetes 叢集,包括狀態、Kubernetes 版本和其他詳細資料。由於 Kubernetes 叢集是區域資源,因此您只能列出每個區域的叢集。
主控台
在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
系統會顯示機構中所有可用的叢集,以及這些叢集的狀態和其他資訊:

kubectl
列出機構中區域可用的 Kubernetes 叢集:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVER將
MANAGEMENT_API_SERVER替換為區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。輸出結果會與下列內容相似:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
查看可更新的屬性
建立 Kubernetes 叢集後,您可以變更一組屬性。您只能變更 Cluster 自訂資源中的可變更屬性。spec叢集佈建完成後,並非所有 spec 中的屬性都可更新。如要查看這些可更新的屬性,請完成下列步驟:
主控台
在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
在 Kubernetes 叢集清單中,按一下叢集名稱即可查看叢集屬性。
可編輯的屬性會顯示「編輯」圖示 edit。
kubectl
查看
Cluster規格的屬性清單,以及每個屬性對應的有效值:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVER將
MANAGEMENT_API_SERVER替換為區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一文瞭解詳情。輸出結果會與下列內容相似:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDC air-gapped version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDC maintains the cluster versions for users. Optional. Mutable.如要更新這些設定,請使用 GDC 控制台或
kubectlCLI。例如,您可以調整節點集區的大小。
調整 Ingress 服務 IP 位址大小
建立 Kubernetes 叢集後,您可以調整 Ingress 服務 IP 位址大小。
使用互動式編輯器,透過
kubectlCLI 開啟Cluster自訂資源規格:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER更改下列內容:
KUBERNETES_CLUSTER_NAME:提供 IP 位址的叢集名稱。MANAGEMENT_API_SERVER:Kubernetes 叢集所在區域 API 伺服器的 kubeconfig 路徑。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱登入一文瞭解詳情。
將「
ingressServiceIPSize」欄位更新為新的 IP 位址大小:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...將
INGRESS_SERVICE_IP_SIZE替換為更新後的 Ingress 服務 IP 位址大小。儲存檔案並結束編輯器。
沒有設定 Ingress 服務 IP 位址大小的限制。我們會根據貴機構的需求,提供您要求的 IP 位址數量。如果無法完成要求,叢集會回報錯誤。
升級 Kubernetes 叢集
您可以自動或手動升級 Kubernetes 叢集。如需升級叢集的詳細操作說明,請參閱「叢集升級」一節。