更新集群

本文档介绍如何执行未涉及版本更改的集群更新。

集群更新是对集群配置的更改。

集群升级是集群更新的一种特殊情况,包括对控制平面版本或节点池版本的更改。如需了解如何升级,请参阅升级 Google Distributed Cloud

查看您的防火墙规则

在 1.29 版及更高版本中,服务器端预检检查默认处于启用状态。服务器端预检检查需要额外的防火墙规则。在管理员集群的防火墙规则中,搜索“预检检查”并确保已配置所有必需的防火墙规则。

使用服务器端预检检查时,当您使用 gkectl 更新用户集群时,预检检查会在管理员集群上运行,而不是在管理员工作站本地运行。使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 更新集群时,系统会在管理员集群上运行服务器端预检检查。

当您更新管理员集群时,Google Distributed Cloud 会部署 Docker in Docker (kind) 集群,以临时托管更新管理员集群所需的 Kubernetes 控制器。此临时集群称为引导集群。更新管理员集群时,系统会在引导集群上运行服务器端预检检查。

可以更新的内容

创建集群后,部分集群功能和设置可以更新,但其他功能和设置无法更新。如需查看可以更新哪些功能,请查看管理员集群配置文件用户集群配置文件的参考页面。可更新的字段标记为“可变”,无法更新的字段标记为“不可变”。

您还可以通过运行 gkectl 命令查看哪些功能和设置可以更新。

如需查看可以在管理员集群中更新的内容,请执行以下操作:

gkectl update admin --help

输出示例:

Update the admin cluster. Only the following updates are supported and they can
only be updated one at a time:
- Enabling/Disabling Vsphere Resource Metrics
- Adding static IPs
- Updating vCenter CA certificate
- Registering Admin Cluster
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling Auto Repair
- Enabling/Disabling Auto Resize for Addon Nodes
- Enabling/Disabling GKE OnPrem API
- Updating OS Image Type
- Enabling/Disabling AntiAffinityGroups
- Update Secrets Encryption Configuration
- [Preview] Enabling/Disabling Cluster Backup
- [Preview] Update Cluster Backup configs

如需查看可以在用户集群中更新的内容,请执行以下操作:

gkectl update cluster --help

输出示例:

Update a GKE On-Prem cluster. Only the following updates are supported and they
can only be updated one at a time:
- Adding static IPs
- Updating node pool
- Updating user master cpu and memory
- Enabling/Disabling Vsphere Resource Metrics
- Enabling/Disabling vSphere CSI deployment
- Enabling/Disabling Auto Repair
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling GKE OnPrem API
- Registering User Cluster
- Updating vCenter CA certificate
- Updating MetalLB Address Pools
- Enabling/Disabling Auto Resizing on user master
- Updating NodePoolUpdatePolicy
- Enabling/Disabling AntiAffinityGroups
- [Preview] Enabling/Disabling Node Network Policy
- Updating Secrets Encryption
- Enabling/Disabling DataplaneV2 forwardMode

一次更新一项内容

一次仅更新一项功能或设置。例如,假设您要更新主 CPU 和内存,并且还想停用自动修复

然后,您需要执行两项单独的更新:一个针对主 CPU 和内存,另一个针对自动修复。在进行第二次更新之前,请验证第一次更新是否成功。

更新过程

您可以使用 gkectl、Google Cloud 控制台或 Google Cloud CLI 对用户集群进行更新。如果您使用 Terraform 创建用户集群,则可以使用 Terraform 更新集群。几乎在所有情况下,您都必须使用 gkectl 更新管理员集群。

以下示例展示了如何更新集群。

gkectl

gkectl update 命令采用以下形式之一:

管理员集群示例 (gkectl update admin)

假设您要将管理员集群中的 gkeOnPremAPI.enabled 的值从 false 更改为 true。首先,修改管理员集群配置文件,并将值设置为 true

gkeOnPremAPI:
  enabled: true

然后更新管理员集群:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

请替换以下内容:

  • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

  • ADMIN_CLUSTER_CONFIG:管理员集群配置文件的路径

用户集群示例 (gkectl update cluster)

假设您要将用户集群中的 stackdriver.vSphereDisableResourceMetrics 的值从 false 更改为 true。首先,修改用户集群配置文件,并将值设置为 true

stackdriver:
  disableVsphereResourceMetrics: true

然后更新用户集群:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

请替换以下内容:

  • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

  • USER_CLUSTER_CONFIG:用户集群配置文件的路径

用户集群示例 (gkectl update credentials)

假设您要更改用户集群用于调用 vCenter Server 的凭据。

用户集群配置文件具有 vCenter.credentials.fileRef.path 字段,指向凭据配置文件。在凭据配置文件中,更新 usernamepassword 的值。例如:

items:
- name: "vcenter-creds"
  username: "new-vcenter-account"
  password: "U$icUKEW#INE"

然后更新凭据:

gkectl update credentials vsphere \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

请替换以下内容:

  • USER_CLUSTER_CONFIG:用户集群配置文件的路径

  • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

控制台

  1. 在控制台中,转到 Google Kubernetes Engine 集群概览页面。

    转到 GKE 集群

  2. 选择 Google Cloud 项目,然后选择要更新的集群。

  3. 详细信息面板中,点击更多详细信息

  4. 可在 Google Cloud 控制台中更新的字段带有铅笔图标。点击其中一个铅笔图标。在打开的框中,根据需要更改字段值,然后点击完成

  5. 在页面顶部的进度条中,点击显示详细信息。等待更新完成。

gcloud CLI

运行适用的更新命令。请仅指定您要修改的配置的标志:

更新用户集群中的管理员用户

每个集群的 Kubernetes API 服务器都需要能够对其收到的请求进行授权。如需配置授权,您需要在每个集群上配置 Kubernetes 基于角色的访问权限控制 (RBAC) 政策。管理员用户是指在用户集群中被授予 cluster-admin 角色的用户。此角色可向用户授予对集群的完整管理员权限。

假设 Alice 和 Bob 是 us-west1 区域中名为 cluster-1 的用户集群上唯一的管理员用户。假设 Alice 希望将 Trent 添加为额外的管理员用户。小丽可以运行以下命令:

gcloud container vmware clusters update cluster-1 \
    --project example-project-id-12345 \
    --location us-west1 \
    --admin-users alice@example.com \
    --admin-users bob@example.com \
    --admin-users trent@example.com

上述命令会将 Alice 和 Bob 保留在管理员用户列表中,并将 Trent 添加到管理员用户列表。请注意,该命令中必须列出 Alice 和 Bob,因为该命令会使用该命令中指定的列表覆盖当前的管理员用户列表。另请注意,每个 --admin-users 标志仅指定一个用户。您不能在一个标志中指定多个用户。

Terraform

  1. 更改用于创建集群或节点池的 Terraform 配置文件中适用字段的值。有关详细的字段说明,请参阅 Terraform 参考文档:

  2. 运行 terraform apply 以更新配置。

更新用户集群中的管理员用户

每个集群的 Kubernetes API 服务器都需要能够对其收到的请求进行授权。如需配置授权,您需要在每个集群上配置 Kubernetes 基于角色的访问权限控制 (RBAC) 政策。管理员用户是指在用户集群中被授予 cluster-admin 角色的用户。此角色可向用户授予对集群的完整管理员权限。

假设 Alice 和 Bob 是特定用户集群中唯一的管理员用户。并且假设 Alice 希望将 Trent 添加为额外的管理员用户。Alice 可以按如下方式调整 Terraform 配置,然后运行 terraform apply

authorization {
  admin_users {
    username = "alice@example.com"
    username = "bob@example.com"
    username = "trent@example.com"
  }
}

上述调整会将 Alice 和 Bob 保留在管理员用户列表中,并将 Trent 添加到管理员用户列表。请注意,Alice 和 Bob 必须列在新配置中,因为 terraform apply 命令会使用配置中指定的列表覆盖当前的管理员用户列表。

更多信息

本部分列出的文档提供了有关更新集群的更多详情。

更新集群/管理员

以下文档详细介绍了如何使用 gkectl update admingkectl update cluster 更新功能和设置:

更新凭据

以下文档详细介绍了如何使用 gkectl update credentials 更新密钥和证书:

后续步骤

升级集群