借助 Google Distributed Cloud (GDC) 网闸隔离配置,您可以在创建 Kubernetes 集群后使用 GKE on GDC 对其进行管理。借助此服务,您可以通过以下工作流来适应不断变化的容器工作负载要求,并维护现有集群节点:
将共享集群关联到项目以及从项目分离共享集群:在创建集群后,将共享集群关联到多个项目以及从多个项目分离共享集群,以更改共享集群工作负载的范围。
查看组织中的集群:列出组织中的集群,以跟踪容器工作负载可用的集群。
列出 Kubernetes 版本:查看集群的 Kubernetes 版本,了解集群与最新 Kubernetes 版本对应的功能。
查看可更新的集群属性:查看
Cluster自定义资源定义中可更改的属性。
本文档适用于平台管理员群组中负责管理跨多个项目的集群中托管的容器工作负载的 IT 管理员,以及应用运维人员群组中负责在单个项目中创建应用工作负载的开发者。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。
准备工作
如需完成本文档中的任务,您必须请求必要的权限并准备环境。
申请 IAM 角色
您必须拥有特定角色,才能获得维护 Kubernetes 集群所需的权限。您所需的角色取决于您是在组织级共享集群还是项目级标准集群中工作。如需了解详情,请参阅 Kubernetes 集群配置。
共享集群角色
如需查看和维护共享 Kubernetes 集群及其资源,请让您的 IAM 组织管理员根据要执行的任务向您授予以下角色:
Project Creator (
project-creator):创建或查看项目资源。 需要此角色才能将共享集群附加到项目。Project Editor (
project-editor):删除、更新或查看项目资源。如需从项目中分离共享集群,必须拥有此角色。User Cluster Viewer (
user-cluster-viewer):查看共享集群及其资源。此角色提供对管理 API 服务器中托管的共享集群的管理平面 API 的访问权限。
这些角色未绑定到项目命名空间。
标准集群角色
如需查看标准 Kubernetes 集群及其资源,请让您的 IAM 项目管理员为您授予 Standard Cluster Viewer (standard-cluster-viewer) 角色。此角色提供对管理 API 服务器中托管的标准集群的管理平面 API 的访问权限。
此角色会绑定到您的项目命名空间。
准备环境
如需使用 API 对 Kubernetes 集群运行命令,请确保您拥有以下资源:
找到 Kubernetes 集群名称,或向平台管理员群组的成员询问集群名称。
在这些说明中,请使用 Kubernetes 集群名称替换
CLUSTER_NAME。登录并生成管理 API 服务器的 kubeconfig 文件。
在这些说明中,请使用 Management API 服务器的 kubeconfig 路径替换
MANAGEMENT_API_SERVER。
在项目层次结构中移动集群
项目提供服务实例的逻辑分组。您可以在 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 集群类型。
在导航菜单中,依次选择 Kubernetes Engine > 集群。
系统会显示组织中所有可用的共享集群及其状态和其他信息:

gdcloud
列出该可用区中可用的 Kubernetes 集群:
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 更新这些设置。 例如,您可以调整节点池的大小。