本文档介绍如何执行不包含版本更改的集群更新。
集群更新是指对集群配置所做的更改。
集群升级是集群更新的一种特殊情况,其中包括更改控制平面版本或更改节点池版本。如需了解如何升级,请参阅升级 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 update
命令采用以下格式之一:
gkectl update credentials
- 使用此命令更新集群凭据。gkectl update admin
- 在管理员集群配置文件中进行更改后运行此命令。gkectl update cluster
- 在用户集群配置文件中进行更改后运行此命令。
管理员集群示例 (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 字段,该字段指向凭据配置文件。在凭据配置文件中,更新 username
和 password
的值。例如:
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 文件的路径
控制台
在控制台中,进入 Google Kubernetes Engine 集群概览页面。
选择 Google Cloud 项目,然后选择要更新的集群。
在详细信息面板中,点击更多详细信息。
可在 Google Cloud 控制台中更新的字段带有铅笔图标。点击其中一个铅笔图标。在打开的框中,根据需要更改字段值,然后点击完成。
在页面顶部的进度条中,点击显示详细信息。等待更新完成。
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
更改用于创建集群或节点池的 Terraform 配置文件中适用字段的值。如需详细了解字段说明,请参阅 Terraform 参考文档:
通过运行
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 admin
和 gkectl update cluster
更新功能和设置:
更新凭据
以下文档详细介绍了如何使用 gkectl update credentials
更新密钥和证书: