创建和管理集群

本页面介绍如何创建和管理 Google Distributed Cloud 已连接集群资源。如需详细了解 Distributed Cloud Connected 集群,请参阅 Distributed Cloud Connected 的工作原理

前提条件

在创建 Distributed Cloud 连接集群之前,您必须在目标 Google Cloud 项目中启用所需的 API。为此,您必须在 Google Cloud 项目中拥有以下角色之一:

  • Owner (roles/owner)
  • Editor (roles/editor)
  • Service Usage Admin (roles/serviceusage.serviceUsageAdmin)

如需详细了解这些角色,请参阅基本角色。如需了解如何授予角色,请参阅授予单个角色

如需创建 Distributed Cloud 连接集群,请启用以下 API:

  • anthos.googleapis.com
  • anthosaudit.googleapis.com
  • anthosgke.googleapis.com
  • cloudresourcemanager.googleapis.com
  • connectgateway.googleapis.com
  • container.googleapis.com
  • edgecontainer.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • gkeonprem.googleapis.com
  • iam.googleapis.com
  • kubernetesmetadata.googleapis.com
  • logging.googleapis.com
  • monitoring.googleapis.com
  • opsconfigmonitoring.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com
  • storage.googleapis.com
  • sts.googleapis.com

如需了解如何启用 API,请参阅启用服务

创建 Distributed Cloud 连接集群时,适用以下规则:

  • 您必须在自己的 Google Cloud 项目中创建 Distributed Cloud 连接集群。Distributed Cloud 连接集群不能与任何其他类型的集群(包括非 Distributed Cloud 连接集群)共存于同一 Google Cloud 项目中。在同一 Google Cloud 项目中将 Distributed Cloud 连接的集群与任何其他类型的集群混用可能会导致数据丢失。
  • 如果您在 Distributed Cloud 连接的集群之间重新分配节点,该节点会被完全清除并重置为默认配置。
  • 默认情况下,本地控制平面工作负载以高可用性模式运行,具有三个副本,分布在由 Distributed Cloud 自动选择的三个节点上。除非集群中的节点少于三个,或者您专门将集群配置为使用一个节点来运行本地控制平面工作负载,否则情况就是如此。您还可以使用 --control-plane-machine-filter 标志指定高可用性模式的三个节点。 不支持其他任何节点组合。
  • 运行本地控制平面工作负载的节点也会运行应用工作负载。
  • 本地控制平面端点的 IP 地址可在本地网络上访问。您必须确保本地网络的安全配置可防止外部访问这些 IP 地址。

在创建集群之前,请先熟悉以下主题:

创建集群

如需创建 Distributed Cloud 已连接集群,请完成本部分中的步骤。创建集群是在 Distributed Cloud Connected 上部署工作负载所需的多个步骤之一。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

控制台

  1. 在 Google Cloud 控制台中,前往 Kubernetes 集群页面。

    转到集群

  2. 点击创建

  3. 创建集群页面上,点击本地标签页。

  4. Distributed Cloud Edge 选项旁边,点击配置

  5. 集群基本信息页面上,提供以下信息:

    • 名称:用于标识此集群的唯一名称。此名称必须符合 RFC 1213 标准,并且只能包含小写字母数字字符和连字符 (-)。它必须以字母数字字符开头和结尾。
    • 位置:您要在其中创建此集群的 Google Cloud 区域。
    • 每个节点的默认 Pod 数上限:要在相应集群中每个节点上执行的 Kubernetes Pod 的所需上限数量。
    • 标签:点击 添加标签,即可为此集群添加一个或多个标签。
  6. 在左侧导航栏中,点击 Control plane

  7. 控制平面页面上,提供以下信息:

    • 为控制平面位置选择本地
    • 选择目标 Distributed Cloud connected 项目。
    • 选择目标 Distributed Cloud connected 可用区。
    • (可选)指定过滤条件以选择要添加到集群中的特定分布式云机器。
    • 指定是否要将此集群设为高可用性集群。
    • 指定是否允许共享部署工作负载。这样一来,您的工作负载就可以在运行集群控制平面的节点上运行。
  8. 在左侧导航栏中,点击网络

  9. 网络页面上,提供以下信息:

    • 集群默认 Pod 地址范围:在此集群上运行的 Kubernetes Pod 所需的 IPv4 CIDR 块。
    • 服务地址范围:在此集群上运行的 Kubernetes 服务的所需 IPv4 CIDR 地址块。

    如需了解详情,请参阅分布式云 Pod 和服务网络地址分配

  10. 在左侧导航栏中,点击授权

  11. 授权页面上,提供目标 Google Cloud 项目中获授权可修改集群资源的用户账号的名称。

  12. 通过执行以下操作之一,将节点池分配给集群:

    • 如需将现有节点池分配给此集群,请在左侧导航栏的节点池部分中选择现有节点池,并验证节点池详情页面上的节点池配置是否正确。
    • 如需创建要分配给此集群的新节点池,请点击 添加节点池,然后在节点池详情页面上提供以下信息:
      • 节点池名称:用于标识此节点池的唯一名称。
      • 节点池标签:点击 添加标签,为相应节点池添加一个或多个标签。
      • 工作器节点偏好设置:选择要分配给此节点池的分布式云连接节点。
  13. 如需创建分布式 Cloud 连接集群,请点击创建

gcloud

使用 gcloud edge-cloud container clusters create 命令:

gcloud edge-cloud container clusters create CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --fleet-project=FLEET_PROJECT_ID \
    --cluster-ipv4-cidr=CLUSTER_IPV4_CIDR_BLOCK \
    --services-ipv4-cidr=SERVICE_IPV4_CIDR_BLOCK \
    --default-max-pods-per-node=MAX_PODS_PER_NODE \
    --release-channel RELEASE_CHANNEL \
    --control-plane-node-storage-schema CONTROL_PLANE_STORAGE_SCHEMA \
    --control-plane-kms-key=CONTROL_PLANE_KMS_KEY \
    --control-plane-node-location=CONTROL_PLANE_LOCATION \
    --control-plane-node-count=CONTROL_PLANE_NODE_COUNT \
    --control-plane-machine-filter=CONTROL_PLANE_NODE_FILTER \
    --control-plane-shared-deployment-policy=CONTROL_PLANE_NODE_SHARING \
    --external-lb-address-pools=IPV4_DATA_PLANE_ADDRESSES \
    --version SOFTWARE_VERSION \
    --offline-reboot-ttl REBOOT_TIMEOUT \
    --default-container-runtime RUNTIME_CLASS \
    --enable-google-group-authentication GROUP_AUTHENTICATION
 

替换以下内容:

  • CLUSTER_ID:用于标识此集群的唯一名称。 此名称必须符合 RFC 1213 标准,并且只能包含小写字母数字字符和连字符 (-)。它必须以字母数字字符开头和结尾。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建集群的 Google Cloud 区域。
  • FLEET_PROJECT_ID:集群注册到的舰队宿主项目的 ID。如果省略此标志,则 Distributed Cloud Connected Cluster 项目将用作舰队宿主项目。
  • CLUSTER_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes Pod 的 IPv4 CIDR 地址块
  • SERVICE_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes 服务的 IPv4 CIDR 地址块
  • MAX_PODS_PER_NODE(可选):此集群中每个节点上可运行的 Kubernetes Pod 数上限。如果省略,则默认为 110。此数量可能会受到 Pod 的 CIDR 地址块大小的限制。
  • RELEASE_CHANNEL:(可选):指定您希望此集群运行的 Distributed Cloud 软件版本的发布渠道。 有效值为 REGULAR(启用自动集群升级)和 NONE(停用自动集群升级)。如果省略,则默认为 REGULAR
  • CONTROL_PLANE_STORAGE_SCHEMA(可选):指定此集群上控制平面节点的本地存储架构。如需了解详情,请参阅配置本地存储架构
  • CONTROL_PLANE_KMS_KEY(可选):要用于此集群的控制平面节点的 Cloud KMS 密钥的完整路径。例如:

    /projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
    

    只有在您已将 Distributed Cloud Connected 与 Cloud Key Management Service 集成(如为本地存储启用对客户管理的加密密钥 (CMEK) 的支持中所述)时,此标志才适用。

  • CONTROL_PLANE_LOCATION:指示 Distributed Cloud 在本地部署相应集群的控制平面工作负载。该值是目标 Distributed Cloud connected 可用区的名称。

  • CONTROL_PLANE_NODE_COUNT(可选):指定运行本地控制平面工作负载的节点数量。有效值为 3(表示高可用性)和 1(表示标准操作)。 如果省略,则默认为 3

  • CONTROL_PLANE_NODE_FILTER(可选):指定运行本地控制平面工作负载的节点的正则表达式格式列表。如果省略,Distributed Cloud 会自动随机选择节点。

  • CONTROL_PLANE_NODE_SHARING:(可选)指定应用工作负载是否可以在运行本地控制平面工作负载的节点上运行。有效值为 DISALLOWEDALLOWED。如果省略,则默认为 DISALLOWED

  • IPV4_DATA_PLANE_ADDRESSES:指定在集群以可维护性模式运行时,在分布式云负载均衡器后运行的服务的入站流量的 IPv4 地址、地址范围或子网。接受以英文逗号分隔的列表,或 YAML 或 JSON 格式的配置文件。如需了解详情,请参阅负载均衡

  • SOFTWARE_VERSION:指定您希望此集群运行的 Distributed Cloud Connected 软件版本,格式为 1.X.Y,其中 X 是次要版本,Y 是补丁版本,例如 1.5.1。如果省略,则默认为服务器默认软件版本,该版本通常是 Distributed Cloud Connected 的最新可用版本。如需获取可用于创建集群的软件版本(包括服务器默认版本),请参阅获取集群的可用软件版本。您必须将 RELEASE_CHANNEL 标志设置为 NONE,以指定集群软件版本。

  • REBOOT_TIMEOUT:指定一个时间窗口(以秒为单位),在此期间,集群节点可以在重新启动后重新加入以可续航模式运行的集群。如果省略,则默认为 0,这表示在重新建立与 Google Cloud 的连接之前,不允许重新启动的节点重新加入集群。最小超时值为 1800 或 30 分钟。您也可以使用 ISO 8601 格式表示此值(例如 1dT1h2m3s)。

    注意:如果您指定了重启超时时限,即使您在指定时间内停用或删除存储密钥,离线的节点也可以重启并重新加入集群。超时时限越长,这种风险就越大。

  • RUNTIME_CLASS:指定此集群中工作负载的默认运行时类。有效值为 runcgvisor。如果省略,则默认为 runc。可以通过在 Pod 配置中指定运行时类来替换,如配置 Pod 运行时类中所述。 这是一项预览版功能。

    指定 gvisor 运行时类会将 Pod 切换到基于 gVisor 的 Open Container Initiative (OCI) 安全运行时。gVisor 是一种沙盒解决方案,可在工作负载及其主机之间实现强隔离。这是一个预览级运行时类。

  • GROUP_AUTHENTICATION:指定您是否可以通过使用 Google 群组(而非个人账号)进行身份验证来访问集群。有效值为 truefalse。如果省略,则默认为 false

API

projects.locations.clusters 方法发出 POST 请求:

POST /v1/projects/PROJECT_ID/locations/REGION/clusters?clusterId=CLUSTER_ID&requestId=REQUEST_ID&fleetId=FLEET_PROJECT_ID

{
  "labels": { LABELS,
  },
  "authorization": {
    "adminUsers": {
      "username": "USERNAME"
    }
  },
  "fleet": {
    "project": "FLEET_PROJECT_ID"
  },
  "networking": {
    "clusterIpv4CidrBlocks": CLUSTER_IPV4_CIDR_BLOCK,
    "servicesIpv4CidrBlocks": SERVICE_IPV4_CIDR_BLOCK,
      },
  "defaultMaxPodsPerNode": MAX_PODS_PER_NODE,
  "releaseChannel": "RELEASE_CHANNEL",
  "controlPlaneEncryption": {
   "kmsKey": CONTROL_PLANE_KMS_KEY,
  },
  "controlPlane": {
    "local": {
      "nodeLocation": "CONTROL_PLANE_LOCATION",
      "nodeCount": CONTROL_PLANE_NODE_COUNT,
      "machineFilter": "CONTROL_PLANE_NODE_FILTER",
      "sharedDeploymentPolicy": "CONTROL_PLANE_NODE_SHARING"
    }
  },
  "externalLoadBalancerIpAddressPools": [
    "IPV4_DATA_PLANE_ADDRESSES"
  ],
  "targetVersion": "SOFTWARE_VERSION",
  "offlineRebootTtl": "REBOOT_TIMEOUT",
  "defaultContainerRuntime": "RUNTIME_CLASS",
  "enableGoogleGroupAuthentication": "GROUP_AUTHENTICATION",
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud connected 集群的 Google Cloud 区域。
  • CLUSTER_ID:用于标识此集群的唯一名称。 此名称必须符合 RFC 1213 标准,并且只能包含小写字母数字字符和连字符 (-)。它必须以字母数字字符开头和结尾。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • FLEET_PROJECT_ID:集群注册到的舰队宿主项目的 ID。可以是单独的项目,也可以是此集群所属的 Distributed Cloud 连接项目 (PROJECT_ID)。必须注册舰队。
  • LABELS:要应用于此集群资源的标签列表。
  • USERNAME:目标 Google Cloud 项目中有权修改集群资源的用户账号的名称。
  • CLUSTER_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes Pod 的 IPv4 CIDR 地址块
  • SERVICE_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes 服务的 IPv4 CIDR 地址块
  • MAX_PODS_PER_NODE:可在相应集群中的每个节点上运行的 Kubernetes Pod 数量上限。如果省略,则默认为 110。此数量也可能会受到 Pod 的 CIDR 地址块大小的限制。
  • RELEASE_CHANNEL:(可选):指定您希望此集群运行的 Distributed Cloud Connected 软件版本的发布渠道。有效值为 REGULAR(启用自动集群升级)和 NONE(停用自动集群升级)。如果省略,则默认为 REGULAR
  • CONTROL_PLANE_KMS_KEY(可选):要用于此集群的控制平面节点的 Cloud KMS 密钥的完整路径。例如:

    /projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
    

    只有在您已将 Distributed Cloud Connected 与 Cloud Key Management Service 集成(如为本地存储启用对客户管理的加密密钥 (CMEK) 的支持中所述)的情况下,此参数才适用。

  • CONTROL_PLANE_LOCATION:指示 Distributed Cloud 在本地部署相应集群的控制平面工作负载。该值是目标 Distributed Cloud 可用区的名称。

  • CONTROL_PLANE_NODE_COUNT:指定要运行本地控制平面工作负载的节点数。有效值为 3(表示高可用性)和 1(表示标准运行)。

  • CONTROL_PLANE_NODE_FILTER(可选):指定运行本地控制平面工作负载的节点的正则表达式格式列表。如果省略,Distributed Cloud 会自动随机选择节点。

  • CONTROL_PLANE_NODE_SHARING:指定应用工作负载是否可以在运行本地控制平面工作负载的节点上运行。有效值为 DISALLOWEDALLOWED。如果省略,则默认为 DISALLOWED

  • IPV4_DATA_PLANE_ADDRESSES:指定在集群以可维护性模式运行时,在分布式云负载均衡器后运行的服务的入站流量的 IPv4 地址、地址范围或子网。接受以英文逗号分隔的列表,或 YAML 或 JSON 格式的载荷。如需了解详情,请参阅负载均衡

  • SOFTWARE_VERSION:指定您希望此集群运行的 Distributed Cloud 软件版本,格式为 1.X.Y,其中 X 是次要版本,Y 是补丁版本,例如 1.5.1。如果省略,则默认为服务器默认软件版本,该版本通常是 Distributed Cloud Connected 的最新可用版本。如需获取可用于创建集群的软件版本(包括服务器默认版本),请参阅获取集群的可用软件版本。您必须将 RELEASE_CHANNEL 字段设置为 NONE,以指定集群软件版本。

  • REBOOT_TIMEOUT:指定一个时间窗口(以秒为单位),在此期间,集群节点可以在重新启动后重新加入以可续航模式运行的集群。如果省略,则默认为 0,这表示在重新建立与 Google Cloud 的连接之前,不允许重新启动的节点重新加入集群。

    注意:如果您指定了重启超时时限,即使您在指定时间内停用或删除存储密钥,离线节点也可以重启并重新加入集群。

  • RUNTIME_CLASS:指定此集群中工作负载的默认运行时类。有效值为 runcgvisor。如果省略,则默认为 runc。可以通过在 Pod 配置中指定运行时类来替换,如配置 Pod 运行时类中所述。 这是一项预览版功能。

    指定 gvisor 运行时类会将 Pod 切换到基于 gVisor 的 Open Container Initiative (OCI) 安全运行时。gVisor 是一种沙盒解决方案,可在工作负载及其主机之间实现强隔离。这是一个预览级运行时类。

  • GROUP_AUTHENTICATION:指定您是否可以通过使用 Google 群组(而非个人账号)进行身份验证来访问集群。有效值为 truefalse。如果省略,则默认为 false

列出某个区域中的集群

如需列出在Google Cloud 区域中预配的 Distributed Cloud 已连接集群,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 检查集群列表。

gcloud

使用 gcloud edge-cloud container clusters list 命令:

gcloud edge-cloud container clusters list \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:您在其中创建 Distributed Cloud Connected 集群的 Google Cloud 区域。

API

projects.locations.clusters.list 方法发出 GET 请求:

GET /v1/projects/PROJECT_ID/locations/REGION/clusters?clusterId=CLUSTER_ID&filter=FILTER&pageSize=PAGE_SIZE&orderBy=SORT_BY&pageToken=PAGE_TOKEN

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:目标 Distributed Cloud 集群所在的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • FILTER:将返回的结果限制为特定值的表达式。
  • PAGE_SIZE:每页要返回的结果数。
  • SORT_BY:用于对返回的结果进行排序的字段名称的英文逗号分隔列表。默认排序顺序为升序;如需降序排序,请在所需字段前加上 ~
  • PAGE_TOKEN:在响应的 nextPageToken 字段中,对上一个列表请求的响应中收到的令牌。发送此令牌可接收一页结果。

获取有关集群的信息

如需获取有关 Distributed Cloud connected 集群的信息,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

控制台

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 选择所需的集群。

    右侧窗格中会显示一个包含集群详细信息的展开式面板。

gcloud

使用 gcloud edge-cloud container clusters describe 命令:

gcloud edge-cloud container clusters describe CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:您创建 Distributed Cloud Connected 可用区的 Google Cloud 区域。

API

projects.locations.clusters.get 方法发出 GET 请求:

GET /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。

获取集群的可用软件版本

如需了解您的 Distributed Cloud Connected 可用区中可用于创建集群的 Distributed Cloud Connected 软件版本,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

gcloud

使用 gcloud edge-cloud container get-server-config 命令:

gcloud edge-cloud container get-server-config --location=REGION

REGION 替换为创建 Distributed Cloud Connected 区域的 Google Cloud 区域。

API

projects.locations.serverConfig 方法发出 GET 请求:

GET /v1/projects/PROJECT_ID/locations/REGION/serverConfig

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。

升级集群的软件版本

如需升级已连接的 Distributed Cloud 集群的软件版本,请完成本部分中的步骤。

指定软件升级阶段大小

在完成本部分中的步骤之前,请参阅软件更新分批推出

如需指定可同时因软件升级而停机的节点数量,请使用以下命令:

 gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --max-unavailable-worker-nodes=MAX_UNAVAILABLE_NODES
    

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:目标 Distributed Cloud connected 集群已创建的 Google Cloud 区域。
  • MAX_UNAVAILABLE_NODES:指定可同时因软件升级而停机的工作器节点数上限。

如需将此值重置为默认值,请使用以下命令:

 gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --clear-max-unavailable-worker-nodes
    

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:目标 Distributed Cloud connected 集群已创建的 Google Cloud 区域。

将集群升级到较新版本的 Distributed Cloud Connected 软件

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters upgrade 命令:

gcloud edge-cloud container clusters upgrade CLUSTER_ID \
   --location=REGION \
   --project=PROJECT_ID \
   --schedule=UPGRADE_SCHEDULE \
   --version=SOFTWARE_VERSION

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • REGION:目标分布式云集群已创建的 Google Cloud 区域。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • UPGRADE_SCHEDULE:指定何时触发软件升级。唯一有效的值是 IMMEDIATELY
  • SOFTWARE_VERSION:指定您希望此集群运行的 Distributed Cloud 软件版本,格式为 1.X.Y,其中 X 是次要版本,Y 是补丁版本,例如 1.5.1。如需获取可用于创建集群的软件版本(包括服务器默认版本),请参阅获取集群的可用软件版本

API

projects.locations.clusters.upgrade 方法发出 POST 请求:

POST /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade?requestId=REQUEST_ID
{
  "name": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
  "targetVersion": "SOFTWARE_VERSION",
    "schedule": "UPGRADE_SCHEDULE",
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • UPGRADE_SCHEDULE:指定何时触发软件升级。唯一有效的值是 IMMEDIATELY
  • SOFTWARE_VERSION:指定您希望此集群运行的 Distributed Cloud Connected 软件版本,格式为 1.X.Y,其中 X 是次要版本,Y 是补丁版本,例如 1.5.1。如需获取可用于创建集群的软件版本(包括服务器默认版本),请参阅获取集群的可用软件版本

软件升级通常需要大约 2 小时,具体取决于集群节点池中的节点数量。 该命令会返回一项操作,以便您跟踪软件升级的进度。在软件升级进行期间,集群的状态会设置为 Reconciling,并在升级完成后返回到 Running。如果集群状态为 Error,则表示软件升级失败。 在这种情况下,请重新运行升级流程。如需了解如何检查集群的状态,请参阅获取有关集群的信息

修改集群

如需修改 Distributed Cloud connected 集群,请完成本部分中的步骤。如果您要修改集群的存储加密配置,则无法在同一更新操作中更新任何其他参数。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters update 命令:

gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster-ipv4-cidr=CLUSTER_IPV4_CIDR_BLOCK \
    --services-ipv4-cidr=SERVICES_IPV4_CIDR_BLOCK \
    --default-max-pods-per-node=MAX_PODS_PER_NODE \
    --release-channel=RELEASE_CHANNEL \
    --control-plane-kms-key=CONTROL_PLANE_KMS_KEY \
    --offline-reboot-ttl=REBOOT_TIMEOUT \
    --max-unavailable-worker-nodes=MAX_UNAVAILABLE_NODES \
    --default-container-runtime RUNTIME_CLASS \
    --enable-google-group-authentication GROUP_AUTHENTICATION

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。
  • CLUSTER_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes Pod 的所需 IPv4 CIDR 地址块
  • SERVICE_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes 服务的所需 IPv4 CIDR 地址块
  • MAX_PODS_PER_NODE:要在相应集群中的每个节点上执行的 Kubernetes Pod 的所需上限数量。
  • RELEASE_CHANNEL(可选):指定您希望此集群运行的互联 Distributed Cloud 软件版本的发布渠道。有效值为 REGULAR(启用自动集群升级)和 NONE(停用自动集群升级)。如果省略,则默认为 REGULAR
  • CONTROL_PLANE_KMS_KEY(可选):要用于此集群的控制平面节点的 Cloud KMS 密钥的完整路径。例如:

    /projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
    

    只有在您已将 Distributed Cloud Connected 与 Cloud Key Management Service 集成(如为本地存储启用对客户管理的加密密钥 (CMEK) 的支持中所述)的情况下,此参数才适用。

  • REBOOT_TIMEOUT:指定一个时间窗口(以秒为单位),在此期间,集群节点可以在重新启动后重新加入以可维护性模式运行的集群。如果省略,则默认为 0,这表示在重新建立与 Google Cloud 的连接之前,不允许重新启动的节点重新加入集群。

    注意:如果您指定了重启超时时限,即使您在指定时间内停用或删除存储密钥,离线节点也可以重启并重新加入集群。

  • MAX_UNAVAILABLE_NODES(可选):指定可同时因软件升级而停用的工作器节点数上限。如果省略,则默认为 X。 这是一项预览版功能。

  • RUNTIME_CLASS:指定此集群中工作负载的默认运行时类。有效值为 runcgvisor。如果省略,则默认为 runc。可以通过在 Pod 配置中指定运行时类来替换,如配置 Pod 运行时类中所述。 如果您在 Pod 或集群级别更改运行时类,则必须重启受影响的 Pod,更改才会生效。

    指定 gvisor 运行时类会将 Pod 切换到基于 gVisor 的 Open Container Initiative (OCI) 安全运行时。gVisor 是一种沙盒解决方案,可在工作负载及其主机之间实现强隔离。

  • GROUP_AUTHENTICATION:指定您是否可以通过使用 Google 群组(而非个人账号)进行身份验证来访问集群。有效值为 truefalse。如果省略,则默认为 false

API

projects.locations.clusters.patch 方法发出 PATCH 请求:

PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/?updateMask=UPDATE_MASK&requestId=REQUEST_ID
{
 "labels": { LABELS,
  },
  "networking": {
   "ClusterIpv4CidrBlocks": CLUSTER_IPV4_CIDR_BLOCK,
   "servicesIpv4CidrBlocks": SERVICE_IPV4_CIDR_BLOCK,
   },
  "authorization": {
    "adminUsers": {
       "username": USERNAME
    }
  },
  "defaultMaxPodsPerNode": MAX_PODS_PER_NODE,
  "releaseChannel": RELEASE_CHANNEL,
  "controlPlaneEncryption": {
   "kmsKey": CONTROL_PLANE_KMS_KEY,
  },
  "offlineRebootTtl": "REBOOT_TIMEOUT",
  "defaultContainerRuntime": "RUNTIME_CLASS",
  "enableGoogleGroupAuthentication": "GROUP_AUTHENTICATION",
  }

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • UPDATE_MASK:在此请求中要更新的完全限定字段名称的逗号分隔列表,采用 FieldMask 格式。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • CLUSTER_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes Pod 的所需 IPv4 CIDR 地址块
  • SERVICE_IPV4_CIDR_BLOCK:在此集群上运行的 Kubernetes 服务的所需 IPv4 CIDR 地址块
  • USERNAME:目标 Google Cloud 项目中有权修改集群资源的用户账号的名称。
  • MAX_PODS_PER_NODE:要在相应集群中的每个节点上执行的 Kubernetes Pod 的所需上限数量。
  • RELEASE_CHANNEL:(可选):指定您希望此集群运行的 Distributed Cloud Connected 软件版本的发布渠道。有效值为 REGULAR(启用自动集群升级)和 NONE(停用自动集群升级)。如果省略,则默认为 REGULAR
  • CONTROL_PLANE_KMS_KEY(可选):要用于此集群的控制平面节点的 Cloud KMS 密钥的完整路径。例如:

    /projects/myProject/locations/us-west1-a/keyRings/myKeyRing/cryptoKeys/myGDCE-Key
    

    只有在您已将 Distributed Cloud Connected 与 Cloud Key Management Service 集成(如为本地存储启用对客户管理的加密密钥 (CMEK) 的支持中所述)的情况下,此参数才适用。

  • REBOOT_TIMEOUT:(需要 v1alpha1)指定一个时间窗口(以秒为单位),在此期间,集群节点可以在重新启动后重新加入以可存活模式运行的集群。如果省略,则默认为 0,这表示在重新建立与 Google Cloud 的连接之前,不允许重新启动的节点重新加入集群。这是一项预览版功能。

    注意:如果您指定了重启超时时限,即使您在指定时间内停用或删除存储密钥,离线节点也可以重启并重新加入集群。

  • RUNTIME_CLASS:指定此集群中工作负载的默认运行时类。有效值为 runcgvisor。如果省略,则默认为 runc。可以通过在 Pod 配置中指定运行时类来替换,如配置 Pod 运行时类中所述。 如果您在 Pod 或集群级别更改运行时类,则必须重启受影响的 Pod,更改才会生效。

    指定 gvisor 运行时类会将 Pod 切换到基于 gVisor 的 Open Container Initiative (OCI) 安全运行时。gVisor 是一种沙盒解决方案,可在工作负载及其主机之间实现强隔离。

  • GROUP_AUTHENTICATION:指定您是否可以通过使用 Google 群组(而非个人账号)进行身份验证来访问集群。有效值为 truefalse。如果省略,则默认为 false

获取集群的凭据

如需获取 Distributed Cloud Connected Cluster 的凭据,请完成本部分中的步骤。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Viewer 角色 (roles/edgecontainer.viewer)。

gcloud

使用 gcloud edge-cloud container clusters get-credentials 命令:

gcloud edge-cloud container clusters get-credentials CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --offline-credential

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。

如需为集群生成离线凭据,请指定 --offline-credential 标志。

API

projects.locations.clusters 方法发出 GET 请求:

GET /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标分布式 Cloud 可用区的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。

通过 Connect 网关获取集群凭据

Connect 网关充当代理,用于使用 kubectl CLI 工具访问集群。 每个通过 Connect 网关请求集群凭据的用户账号都必须具有 Connect 网关文档中的向用户授予 IAM 角色中所述的权限。

在通过 Connect 网关请求凭据之前,您必须先使用以下命令安装 gke-gcloud-auth-plugin 插件:

 gcloud components install gke-gcloud-auth-plugin

如需通过 Connect 网关获取集群凭据,请使用以下命令:

 gcloud container hub memberships get-credentials CLUSTER_ID --project=PROJECT_ID

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。

为集群配置维护窗口

本部分介绍如何为 Distributed Cloud 连接集群指定和清除以下类型的维护期:

  • 维护时段。指定 Google 可在 Distributed Cloud 连接的集群上执行维护和软件升级的时间范围。
  • 维护排除时段。指定一个时间窗口,在此期间,Google 无法对您的 Distributed Cloud connected 集群执行维护或软件升级。 如需配置维护排除期,您必须先配置维护窗口。 维护排除窗口优先于集群的维护窗口。

为集群指定维护窗口

如需为 Distributed Cloud connected 集群指定维护窗口,请完成本部分中的步骤。如需详细了解集群维护,请参阅了解软件更新和维护期

对于日期和时间格式,请使用 RFC 5545

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

控制台

如果您使用的是 Google Cloud 控制台,则只能在创建集群时指定维护窗口。如需在现有集群上指定维护窗口,您必须使用 Google Cloud CLI 或 Distributed Cloud Edge Container API。

gcloud

使用 gcloud edge-cloud container clusters update 命令:

gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --maintenance-window-start=MAINTENANCE_START \
    --maintenance-window-end=MAINTENANCE_END \
    --maintenance-window-recurrence=MAINTENANCE_FREQUENCY

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud connected 集群的 Google Cloud 区域。
  • MAINTENANCE_START:维护期的开始时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。
  • MAINTENANCE_END:维护窗口的结束时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。
  • MAINTENANCE_FREQUENCY:维护期的频率,采用 FREQ=WEEKLY|DAILY;BYDAY=MO,TU,WE,TH,FR,SA,SU 格式:
    • BYDAY:一个以英文逗号分隔的日期列表,如果 FREQ 设置为 WEEKLY,则可以在这些日期进行维护。如果您省略 BYDAY 参数,Google 会为您选择星期几。
    • 如果您将 FREQ 设置为每天,维护期将每天在指定的时间段内进行。

API

projects.locations.clusters.update 方法发出 PATCH 请求:

PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?updateMask=maintenancePolicy&requestId=REQUEST_ID
{
 "maintenance_policy": {
   "window": {
     "recurring_window": {
       "window": {
         "start_time": "MAINTENANCE_START",
         "end_time": "MAINTENANCE_END"
         },
       "recurrence": "MAINTENANCE_FREQUENCY"
     }
   }
 }
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud connected 集群的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • UPDATE_MASK:在此请求中要更新的完全限定字段名称的逗号分隔列表,采用 FieldMask 格式。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • CLUSTER_ID:目标集群的名称。
  • USERNAME:目标 Google Cloud 项目中有权修改集群资源的用户账号的名称。
  • MAINTENANCE_START:维护期的开始时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。
  • MAINTENANCE_END:维护窗口的结束时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。
  • MAINTENANCE_FREQUENCY:维护期的频率,采用 FREQ=WEEKLY|DAILY;BYDAY=MO,TU,WE,TH,FR,SA,SU 格式:
    • FREQ 可以是 DAILYWEEKLY
    • BYDAY:一个以英文逗号分隔的日期列表,如果 FREQ 设置为 WEEKLY,则可以在这些日期进行维护。如果您省略 BYDAY 参数,Google 会为您选择星期几。
    • 如果您将 FREQ 设置为每天,维护期将每天在指定的时间段内进行。

如需了解详情,请参阅资源:集群

清除集群的维护窗口

如需清除 Distributed Cloud Connected 集群的维护窗口,请完成本部分中的步骤。清除集群的维护窗口也会清除该集群的所有相应维护排除窗口。如需详细了解集群维护,请参阅了解软件更新和维护窗口

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters update 命令:

gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --clear-maintenance-window

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:目标 Distributed Cloud 集群所在的 Google Cloud 区域。

API

projects.locations.clusters.update 方法发出 PATCH 请求:

PATCH /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?updateMask=maintenancePolicy&requestId=REQUEST_ID
{
 "maintenance_policy": null
}

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud connected 集群的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • UPDATE_MASK:在此请求中要更新的完全限定字段名称的逗号分隔列表,采用 FieldMask 格式。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。
  • USERNAME:目标 Google Cloud 项目中有权修改集群资源的用户账号的名称。

如需了解详情,请参阅资源:集群

为集群指定维护排除窗口

如需为 Distributed Cloud connected 集群指定维护排除时间段,请完成本部分中的步骤。如需详细了解集群维护,请参阅了解软件更新和维护期

对于日期和时间格式,请使用 RFC 3339

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters update 命令:

gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --add-maintenance-exclusion-name=EXCLUSION_NAME \
    --add-maintenance-exclusion-start=EXCLUSION_START \
    --add-maintenance-exclusion-end=EXCLUSION_END

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud connected 集群的 Google Cloud 区域。
  • EXCLUSION_NAME:相应维护排除时间窗口的描述性名称。
  • EXCLUSION_START:维护期的开始时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。
  • EXCLUSION_END:维护窗口的结束时间,采用 YYYY-MM-DDTHH:MM:SSZ 格式。

清除集群的维护排除窗口

如需清除 Distributed Cloud connected 集群的维护排除时段,请完成本部分中的步骤。如需详细了解集群维护,请参阅了解软件更新和维护期

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters update 命令:

gcloud edge-cloud container clusters update CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION \
    --remove-maintenance-exclusion-window=MAINTENANCE_EXCLUSION_WINDOW

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:目标 Distributed Cloud 集群所在的 Google Cloud 区域。
  • MAINTENANCE_EXCLUSION_WINDOW:要清除的维护排除窗口的名称。

删除集群

如需删除 Distributed Cloud 连接集群,请完成本部分中的步骤。您必须先删除分配给集群的所有节点池,然后才能删除集群。

如需完成此任务,您必须在 Google Cloud 项目中拥有 Edge Container Admin 角色 (roles/edgecontainer.admin)。

gcloud

使用 gcloud edge-cloud container clusters delete 命令:

gcloud edge-cloud container clusters delete CLUSTER_ID \
    --project=PROJECT_ID \
    --location=REGION

替换以下内容:

  • CLUSTER_ID:目标集群的名称。
  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。

API

projects.locations.clusters.delete 方法发出 DELETE 请求:

DELETE /v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID?requestId=REQUEST_ID

替换以下内容:

  • PROJECT_ID:目标 Google Cloud 项目的 ID。
  • REGION:创建目标 Distributed Cloud Connected Cluster 的 Google Cloud 区域。
  • CLUSTER_ID:目标集群的名称。
  • REQUEST_ID:用于标识相应请求的唯一程序化 ID。

后续步骤