更新 Azure 集群参数
本页面介绍如何更新 GKE on Azure 集群的设置。您可以按照以下说明更新集群中的任何可更新设置,包括 Kubernetes 版本。由于升级版本是最常见的集群更新操作之一,因此单独的升级集群页面会介绍如何升级集群版本。
更新集群的原因
您可能出于以下任一原因更新集群:
- 更新集群的说明。
- 更新集群的注解。
- 更新集群的管理员用户列表。
- 更新集群的日志记录配置。
- 更新集群的虚拟机大小。
- 更新集群的 AzureClient。
- 将集群的身份验证从 AzureClient 更新为工作负载身份联合。
您还可以更新集群中未列在此处的其他字段。如需查看您可以更新的字段的完整列表,请参阅 gcloud container azure clusters update
和 projects.locations.azureClusters.patch
文档。
前提条件
如需更新集群的任何字段,您必须拥有
gkemulticloud.googleapis.com/azureClusters.update
Identity and Access Management 权限。
更新过程
GKE on Azure 更新集群的过程因更新类型而异。对于某些更改,GKE on Azure 可以更新集群,而无需重启或重新创建任何资源,例如更新集群的说明。GKE on Azure 会立即进行这些更改。
其他更改需要重启控制平面节点,例如更新虚拟机大小或 Kubernetes 版本。对于此类更新,GKE on Azure 会执行“滚动更新”,其中包括以下步骤:
- 选择一个要更新的控制层面实例。GKE on Azure 会先更新健康状况不佳的实例(如果有),然后再更新健康状况良好的实例。
- 删除实例。 GKE on Azure 会重新创建实例,实例会使用新配置启动。
- 对新实例执行健康检查。
- 如果健康检查成功,选择另一个实例并对其执行相同的步骤。重复此循环,直到所有实例都重启或重新创建。如果健康检查失败,GKE on Azure 会将集群置于
DEGRADED
状态并停止更新。如需了解详情,请参阅以下部分。
更新失败时
更新后,GKE on Azure 会对集群执行健康检查。如果健康检查失败,则集群会被标记为 DEGRADED
。您可以使用以下 Google Cloud CLI 命令显示集群的状态:
gcloud container azure clusters describe CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION
替换以下内容:
CLUSTER_NAME
:您的集群的名称GOOGLE_CLOUD_LOCATION
:管理您的集群的 Google Cloud 区域
更新集群
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 GKE Multi-Cloud API 一次更新多个集群字段。
选择更新方法
您可以通过控制台、gcloud CLI 或 GKE Multi-Cloud API 更新大多数字段。某些字段只能通过上述某一种机制进行更新。 如果您要使用控制台更新集群,则必须先选择并配置用于登录集群的身份验证方法。如需了解详情,请参阅连接到集群并进行身份验证。
控制台
在 Google Cloud 控制台中,进入 Google Kubernetes Engine 集群概览页面。
选择集群所在的 Google Cloud 项目。
在集群列表中,选择集群名称,然后在侧边栏中选择查看详细信息。
在详细信息标签页上,选择要更改的字段上的
修改。例如,如需向其他用户授予集群管理权限,请选择管理员用户旁边的
修改,然后输入用户的电子邮件地址。完成更改后,选择完成。
gcloud
使用 gcloud CLI 更新集群时,必须始终包含 CLUSTER_NAME
和 GOOGLE_CLOUD_LOCATION
字段,它们会告知 GKE on Azure 要更新哪个集群。在以下命令中,仅包含要更新的字段;请先移除其他字段,然后再运行该命令。
gcloud container azure clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--cluster-version=CLUSTER_VERSION \
--admin-users=USERNAME_LIST \
--client=CLIENT_NAME \
--vm-size=VM_SIZE
请替换以下内容:
CLUSTER_NAME
:您的集群的名称GOOGLE_CLOUD_LOCATION
(必需):管理集群的受支持的 Google Cloud 区域,例如us-west1
CLUSTER_VERSION
:新的受支持的集群版本USERNAME_LIST
:以英文逗号分隔的用户名列表,例如“kai@example.com,hao@example.com,kalani@example.com”。这些是您要向其授予此集群管理员权限的用户的电子邮件地址。此设置中的名称将替换集群上任何之前的管理员用户列表。CLIENT_NAME
:您的 AzureClientVM_SIZE
:新的受支持虚拟机大小
如需将集群的身份验证从 AzureClient 更新为工作负载身份联合,请运行以下命令:
gcloud container azure clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--azure-tenant-id="${TENANT_ID}" \
--azure-application-id="${APPLICATION_ID}" \
--clear-client
API
使用 GKE Multi-Cloud API 更新集群时,必须始终在 HTTP 请求中包含 CLUSTER_NAME
和 GOOGLE_CLOUD_LOCATION
字段。这些字段会告知 GKE on Azure 要更新哪个集群。还必须在该请求中包含 API 端点。您需要创建一个包含要更新的字段的 JSON 文件。仅在 JSON 文件和 UPDATE_MASK
中包含要更新的字段。
以下示例展示了如何通过 API 更新集群。如需了解详情(包括可更新的字段列表),请参阅 projects.locations.azureClusters.patch
方法文档。
创建一个名为
cluster_update.json
且包含要更新的字段的 JSON 文件。- 使用工作负载身份联合时,JSON 文件应如下所示:
{ "description": "CLUSTER_DESCRIPTION", "controlPlane": { "version": "CLUSTER_VERSION", "vm_size": "VM_SIZE }, "azureServicesAuthentication": { "tenantId": "TENANT_ID", "applicationId": "APPLICATION_ID" }, "authorization": { "adminUsers": [ { "username": USERNAME1, "username": USERNAME2, "username": USERNAME3 } ] } }
- 使用 Azure 客户端时,JSON 文件应如下所示:
{ "description": "CLUSTER_DESCRIPTION", "controlPlane": { "version": "CLUSTER_VERSION", "vm_size": "VM_SIZE }, "azureClient": "CLIENT_NAME", "authorization": { "adminUsers": [ { "username": USERNAME1, "username": USERNAME2, "username": USERNAME3 } ] } }
请替换以下内容:
CLUSTER_VERSION
:新的受支持的集群版本。 请注意,在升级集群时,您必须依次升级到所有次要版本CLUSTER_DESCRIPTION
:新集群说明USERNAME1
、USERNAME2
、USERNAME3
:您要向其授予此集群管理员权限的用户的电子邮件地址。这些字段中的名称将替换集群上任何之前的管理员用户列表。CLIENT_NAME
:您的 AzureClient 名称TENANT_ID
:Azure 租户 IDAPPLICATION_ID
:在创建 Azure Active Directory 应用中创建的 Azure 应用 IDVM_SIZE
:新的虚拟机大小
- 使用工作负载身份联合时,JSON 文件应如下所示:
使用以下命令,通过 GKE Multi-Cloud API 更新这些设置。
curl -d @cluster_update.json -X PATCH \ ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME?update_mask=UPDATE_MASK
请替换以下内容:
ENDPOINT
(必需):您的 Google Cloud 服务端点PROJECT_ID
(必需):您的 Google Cloud 项目GOOGLE_CLOUD_LOCATION
(必需):管理集群的受支持的 Google Cloud 区域,例如us-west1
CLUSTER_NAME
(必需):您的集群名称UPDATE_MASK
(必需):包含以下一个或多个标志的英文逗号分隔列表,指示要更新的字段。在此示例中,指定以下内容。- controlPlane.version
- 说明
- authorization.admin_users
- control_plane.vm_size
- azure_client
- azure_services_authentication.tenant_id
- azure_services_authentication.application_id
如需将集群的身份验证从 AzureClient 更新为工作负载身份联合,请在字段 update_mask
中添加 azure_client
、azure_services_authentication.tenant_id
和 azure_services_authentication.application_id
。
更新 Logging 配置
您可以使用 Google Cloud CLI 更新集群的 Cloud Logging 配置设置。如需更新 Logging 配置,请运行以下命令:
gcloud container azure clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--logging=LOGGING_CONFIG \
替换以下内容:
CLUSTER_NAME
:您的集群的名称GOOGLE_CLOUD_LOCATION
:管理集群的受支持的 Google Cloud 区域,例如us-west1
LOGGING_CONFIG
:[SYSTEM] 或 [SYSTEM,WORKLOAD]
后续步骤
- 如需更新卷 KMS 密钥,请参阅密钥轮替
- 如需详细了解可更新的字段,请参阅
gcloud container azure clusters update
参考文档。 - 请参阅
projects.locations.azureClusters.patch
REST API 文档。