更新用户集群

本主题介绍如何更新现有用户集群的配置。

概览

对于运行 Kubernetes 1.20 及更高版本的用户集群,您可以修改以下特性:

您可以使用 Kubernetes 1.22 及更高版本更新 EC2 实例类型。

如需更新这些资源,请修改 AWSCluster 和 AWSNodePool 资源。

您更新配置后,GKE on AWS 会将集群或节点池置于 Updating 状态。更新完成后,集群或节点池会返回到 Provisioned 状态。

准备工作

如需修改用户集群,集群和节点池必须运行 Kubernetes 1.20 或更高版本。如果您的集群未在运行 Kubernetes 1.20,请先升级用户集群。

如需修改集群的安全群组,管理 GKE on AWS 用户集群的 AWS IAM 角色(在 anthos-gke.yaml 中设置为 spec.authentication.awsIAM.adminIdentityARNs)必须拥有 ec2:ModifyNetworkInterfaceAttribute权限。

更新安全群组

在本部分中,您将更新集群和节点池的安全群组。要更新安全群组,请执行以下步骤:

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 在文本编辑器中打开创建 AWSCluster 的 YAML 文件。 如果您没有初始 YAML 文件,则可以使用 kubectl edit。

    修改 YAML

    如果您按照创建用户集群中的说明操作,则 YAML 文件名为 cluster-0.yaml。在文本编辑器中打开此文件。

    kubectl 修改

    如需使用 kubectl edit 修改 AWSCluster,请运行以下命令:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    将 cluster-name 替换为您的 AWSCluster。例如,要修改默认集群 cluster-0,请运行以下命令:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. 修改 AWSCluster 的 spec.controlPlane.securityGroupIDs 字段。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        securityGroupIDs:
          - SECURITY_GROUP_ID
        ...
    

    将 SECURITY_GROUP_ID 替换为新安全群组的 ID。如需添加多个安全群组,请在 spec.controlPlane.securityGroupIDs 下的数组中添加其他值。

    以下示例包含安全群组 sg-12345678ab 和 sg-abcdef1234:

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    spec:
      controlPlane:
        securityGroupIDs:
          - sg-12345678ab
          - sg-abcdef1234
        ...
    
  4. 修改 AWSNodePool 资源的 spec.securityGroupIDs 字段。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      securityGroupIDs:
        - SECURITY_GROUP_ID
      ...
    
  5. 保存文件。如果您使用 kubectl edit,kubectl 会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. 使用 kubectl 检查更新状态。更新完成后,对象的状态从 Updating 更改为 Provisioned。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    例如,当集群处于正在更新状态时,输出类似于以下内容:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

更新实例类型

在本部分中,您将更新集群和节点池的实例类型。要更新实例类型,请执行以下步骤:

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 在文本编辑器中打开创建 AWSCluster 的 YAML 文件。 如果您没有初始 YAML 文件,则可以使用 kubectl edit。

    修改 YAML

    如果您按照创建用户集群中的说明操作,则 YAML 文件名为 cluster-0.yaml。在文本编辑器中打开此文件。

    kubectl 修改

    如需使用 kubectl edit 修改 AWSCluster,请运行以下命令:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    将 cluster-name 替换为您的 AWSCluster。例如,要修改默认集群 cluster-0,请运行以下命令:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. 修改 AWSCluster 的 spec.controlPlane.instanceType 字段。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        instanceType: AWS_INSTANCE_TYPE
        ...
    

    将 AWS_INSTANCE_TYPE 替换为新的实例类型。如需了解详情,请参阅支持的实例类型。

  4. 修改 AWSNodePool 资源的 spec.instanceType 字段。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      instanceType: AWS_INSTANCE_TYPE
      ...
    
  5. 保存文件。如果您使用 kubectl edit,kubectl 会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. 使用 kubectl 检查更新状态。更新完成后,对象的状态从 Updating 更改为 Provisioned。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    例如,当集群处于正在更新状态时,输出类似于以下内容:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

后续步骤