更新 Azure 集群参数

本页面介绍如何更新 GKE on Azure 集群的设置。您可以按照以下说明更新集群中的任何可更新设置,包括 Kubernetes 版本。由于升级版本是最常见的集群更新操作之一,因此单独的升级集群页面会介绍如何升级集群版本。

更新集群的原因

您可能出于以下任一原因更新集群:

  • 更新集群的说明。
  • 更新集群的注解。
  • 更新集群的管理员用户列表。
  • 更新集群的日志记录配置。
  • 更新集群的虚拟机大小。
  • 更新集群的 AzureClient。
  • 将集群的身份验证从 AzureClient 更新为工作负载身份联合。

您还可以更新集群中未列在此处的其他字段。如需查看您可以更新的字段的完整列表,请参阅 gcloud container azure clusters updateprojects.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 会执行“滚动更新”,其中包括以下步骤:

  1. 选择一个要更新的控制层面实例。GKE on Azure 会先更新健康状况不佳的实例(如果有),然后再更新健康状况良好的实例。
  2. 删除实例。 GKE on Azure 会重新创建实例,实例会使用新配置启动。
  3. 对新实例执行健康检查。
  4. 如果健康检查成功,选择另一个实例并对其执行相同的步骤。重复此循环,直到所有实例都重启或重新创建。如果健康检查失败,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 更新大多数字段。某些字段只能通过上述某一种机制进行更新。 如果您要使用控制台更新集群,则必须先选择并配置用于登录集群的身份验证方法。如需了解详情,请参阅连接到集群并进行身份验证

控制台

  1. 在 Google Cloud 控制台中,进入 Google Kubernetes Engine 集群概览页面。

    转到 GKE 集群

  2. 选择集群所在的 Google Cloud 项目。

  3. 在集群列表中,选择集群名称,然后在侧边栏中选择查看详细信息

  4. 详细信息标签页上,选择要更改的字段上的 修改

    例如,如需向其他用户授予集群管理权限,请选择管理员用户旁边的 修改,然后输入用户的电子邮件地址。

  5. 完成更改后,选择完成

gcloud

使用 gcloud CLI 更新集群时,必须始终包含 CLUSTER_NAMEGOOGLE_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:您的 AzureClient
  • VM_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_NAMEGOOGLE_CLOUD_LOCATION 字段。这些字段会告知 GKE on Azure 要更新哪个集群。还必须在该请求中包含 API 端点。您需要创建一个包含要更新的字段的 JSON 文件。仅在 JSON 文件和 UPDATE_MASK 中包含要更新的字段。

以下示例展示了如何通过 API 更新集群。如需了解详情(包括可更新的字段列表),请参阅 projects.locations.azureClusters.patch 方法文档。

  1. 创建一个名为 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:新集群说明
    • USERNAME1USERNAME2USERNAME3:您要向其授予此集群管理员权限的用户的电子邮件地址。这些字段中的名称将替换集群上任何之前的管理员用户列表。
    • CLIENT_NAME:您的 AzureClient 名称
    • TENANT_ID:Azure 租户 ID
    • APPLICATION_ID:在创建 Azure Active Directory 应用中创建的 Azure 应用 ID
    • VM_SIZE:新的虚拟机大小
  2. 使用以下命令,通过 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_clientazure_services_authentication.tenant_idazure_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]

后续步骤