Google Distributed Cloud (GDC) 實體隔離方案可讓您在建立 Kubernetes 叢集後,使用 GKE on GDC 管理叢集。這項服務可讓您因應不斷變化的容器工作負載需求,並透過下列工作流程維護現有叢集節點:
將共用叢集附加至專案,以及從專案中分離共用叢集:建立叢集後,將共用叢集附加至多個專案,以及從專案中分離共用叢集,即可變更共用叢集工作負載的範圍。
查看貴機構的叢集:列出貴機構的叢集,追蹤容器工作負載可用的項目。
列出 Kubernetes 版本:查看叢集的 Kubernetes 版本,瞭解叢集對應最新 Kubernetes 版本的各項功能。
查看可更新的叢集屬性:查看
Cluster自訂資源定義中可變更的屬性。
本文適用於平台管理員群組中的 IT 管理員,他們負責管理託管在多個專案叢集中的容器工作負載;以及應用程式運算子群組中的開發人員,他們負責在單一專案中建立應用程式工作負載。詳情請參閱 GDC air-gapped 說明文件適用對象。
事前準備
如要完成本文中的工作,您必須具備下列資源和角色:
如要查看及管理共用 Kubernetes 叢集中的節點集區,請要求機構的 IAM 管理員授予您下列角色:
- 使用者叢集管理員 (
user-cluster-admin) - 使用者叢集節點檢視者 (
user-cluster-node-viewer)
這些角色不會繫結至專案命名空間。
- 使用者叢集管理員 (
如要查看及管理標準 Kubernetes 叢集中的節點集區,請要求機構的 IAM 管理員授予您標準叢集管理員 (
standard-cluster-admin) 角色。這個角色會繫結至專案命名空間。如要對 Kubernetes 叢集執行指令,請確認您具備下列資源:
找出 Kubernetes 叢集名稱,或向平台管理員群組成員詢問叢集名稱。
如果沒有 Kubernetes 叢集的 kubeconfig 檔案,請登入並產生該檔案。
請使用 Kubernetes 叢集的 kubeconfig 路徑,替換這些操作說明中的
KUBERNETES_CLUSTER_KUBECONFIG。
如要對區域 API 伺服器執行指令,請產生代管叢集的區域 API 伺服器 kubeconfig 檔案。詳情請參閱「登入」。將環境變數
MANAGEMENT_API_SERVER設為 kubeconfig 路徑。
在專案階層中移動叢集
專案會提供服務執行個體的邏輯分組。您可以從 GDC 專案階層新增及移除共用的 Kubernetes 叢集,適當分組服務。標準叢集只能限定於單一專案,因此無法在專案階層中移動。
將專案附加至共用叢集
從 GDC 控制台建立共用叢集時,您必須先附加至少一個專案,才能順利將容器工作負載部署至該叢集。如必須在現有叢集中新增其他專案,請完成下列步驟:
控制台
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中,按一下叢集名稱開啟「叢集詳細資料」頁面。
- 選取「附加專案」。
- 在可用專案清單中,按一下要附加至叢集的專案名稱。
- 按一下 [儲存]。
API
為叢集建立新的
ProjectBinding自訂資源:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOF更改下列內容:
MANAGEMENT_API_SERVER:區域 API 伺服器的 kubeconfig 路徑。CLUSTER_NAME:叢集名稱。PROJECT_NAME:要將叢集繫結至的專案名稱。每個ProjectBinding資源只能對應至一個叢集。如果專案需要存取多個叢集,則必須為每個叢集建立專屬的ProjectBinding。
Terraform
在 Terraform 設定檔中插入下列程式碼片段,建立
ProjectBinding自訂資源:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }更改下列內容:
MANAGEMENT_API_SERVER:區域 API 伺服器的 kubeconfig 路徑。PROJECT_BINDING_RESOURCE_NAME:專案繫結的 Terraform 資源名稱,例如CLUSTER_NAME-PROJECT_NAME-binding。Terraform 會使用這個名稱來識別專案繫結,GDC 則不會使用。CLUSTER_NAME:叢集名稱。每個ProjectBinding資源只能對應至一個叢集。如果專案需要存取多個叢集,則必須為每個叢集建立專屬的ProjectBinding。PROJECT_NAME:要繫結的專案名稱。每個ProjectBinding資源只能對應一個叢集。如果專案需要存取多個叢集,則必須為每個叢集建立專屬的ProjectBinding。
套用新的專案繫結:
terraform apply
將專案從共用叢集中分離
從共用叢集卸離專案可能會造成重大變更,例如刪除叢集中執行的工作負載。請務必瞭解後果,再將專案從共用叢集卸離。
如要將專案從現有共用叢集中分離,請完成下列步驟:
控制台
- 在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
- 在叢集清單中按一下叢集,開啟「叢集詳細資料」頁面。
- 按一下「中斷連結」delete,即可中斷專案與叢集的連結。
API
刪除連結專案和叢集的
ProjectBinding資源:kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platform更改下列內容:
MANAGEMENT_API_SERVER:區域 API 伺服器的 kubeconfig 路徑。CLUSTER_NAME:叢集名稱。PROJECT_NAME:要從叢集分離的專案名稱。
Terraform
刪除專案繫結資源:
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAME將
PROJECT_BINDING_RESOURCE_NAME替換為要刪除的專案繫結 Terraform 資源名稱,例如CLUSTER_NAME-PROJECT_NAME-binding。Terraform 會使用這個名稱來識別專案繫結,GDC 則不會使用。
查看機構中的所有叢集
您可以查看機構中的所有可用 Kubernetes 叢集,包括狀態、Kubernetes 版本和其他詳細資料。
由於 Kubernetes 叢集是區域資源,因此您只能列出每個區域的叢集。
控制台
在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
系統會顯示機構中所有可用的共用叢集,以及這些叢集的狀態和其他資訊:

gdcloud
列出機構中可用的區域共用叢集:
gdcloud clusters list輸出結果會與下列內容相似:
CLUSTERREF.NAME READINESS.STATE TYPE CURRENTVERSION.USERCLUSTERVERSION CURRENTVERSION.SUPPORT.STATUS user-vm-1 Ready user 1.15.0-gdch.394225-1.28.15-gke.1200 In Support user-vm-2 Ready user 1.15.0-gdch.394225-1.29.12-gke.800 In Support
API
列出機構中區域可用的 Kubernetes 叢集:
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER更改下列內容:
MANAGEMENT_API_SERVER:區域 API 伺服器的 kubeconfig 路徑。KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用platform命名空間。如果是標準叢集,請使用叢集的專案命名空間。
輸出結果會與下列內容相似:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
列出叢集可用的 Kubernetes 版本
您可以列出 GDC 區域中可用的 Kubernetes 版本,確認叢集中可存取的 Kubernetes 功能。
列出可用區域中的 Kubernetes 版本:
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVER將
MANAGEMENT_API_SERVER替換為叢集區域 API 伺服器的 kubeconfig 檔案。輸出看起來類似以下內容:
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
查看可更新的屬性
建立 Kubernetes 叢集後,您可以變更一組屬性。您只能變更 Cluster 自訂資源中的可變動屬性。spec叢集佈建完成後,並非所有 spec 中的屬性都可更新。如要查看這些可更新的屬性,請完成下列步驟:
控制台
在導覽選單中,依序選取「Kubernetes Engine」>「叢集」。
在 Kubernetes 叢集清單中,按一下叢集名稱即可查看叢集屬性。
可編輯的屬性會顯示「編輯」edit圖示。
API
查看
Cluster規格的屬性清單,以及每個屬性對應的有效值:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVER將
MANAGEMENT_API_SERVER替換為區域 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 控制台或 kubectl CLI 更新這些設定。 舉例來說,您可以調整節點集區的大小。