更新集群

本文档介绍如何执行不包含版本更改的集群更新。

集群更新是指对集群配置所做的更改。

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

检查防火墙规则

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

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

更新管理员集群时,Google Distributed Cloud 会部署一个 Kubernetes 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 版本。通常,您使用的 gkectl 版本应与要更新的集群的版本相同。更新期间会强制执行以下版本规则:

  • gkectl 次要版本不能低于集群次要版本。例如,不允许使用 gkectl 1.29 版更新 1.30 集群。补丁版本无关紧要。例如,您可以使用 gkectl 1.29.0-gke.1456 版更新具有更高补丁版本的集群,例如 1.29.1000-gke.94。

  • gkectl 次要版本最多只能比集群版本高两个次要版本。例如,如果您要更新 1.28 集群,则 gkectl 版本可以是 1.29 或 1.30。但您不能使用 gkectl 1.31 版,因为它比集群版本高三个次要版本。

  • 如果您要将集群更新为高级集群,则 gkectl 版本必须与您的集群版本相同。

如果需要,请参阅下载 gkectl 以获取受支持的 gkectl 版本。

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

gkectl

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

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

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

gkeOnPremAPI:
  enabled: true

然后更新管理员集群:

gkectl update admin --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 控制台中更新的字段带有铅笔图标。点击其中一个铅笔图标。在打开的框中,根据需要更改字段值,然后点击 DONE

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

gcloud CLI

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

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

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

假设 Alice 和 Bob 是 us-west1 区域中名为“cluster-1”的用户集群上仅有的管理员用户。假设 Alice 想将 Trent 添加为额外的管理员用户。Alice 可以运行以下命令:

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 更新密钥和证书:

后续步骤

升级集群