本主题介绍如何更新现有用户集群的配置。
概览
对于运行 Kubernetes 1.20 及更高版本的用户集群,您可以修改以下特性:
- 用户集群的安全群组,将在本主题中进行介绍。
- 集群和节点池版本。如需了解详情,请参阅升级 GKE on AWS。
- 代理设置。如需了解详情,请参阅更改代理设置。
- 节点池的大小。如需了解详情,请参阅调整节点池的大小。
您可以使用 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
权限。
更新安全群组
在本部分中,您将更新集群和节点池的安全群组。要更新安全群组,请执行以下步骤:
在
anthos-aws
目录中,使用anthos-gke
将上下文切换到管理服务。cd anthos-aws anthos-gke aws management get-credentials
在文本编辑器中打开创建 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
修改
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 ...
修改
AWSNodePool
资源的spec.securityGroupIDs
字段。apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool spec: securityGroupIDs: - SECURITY_GROUP_ID ...
保存文件。如果您使用
kubectl edit
,kubectl
会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml
使用
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
更新实例类型
在本部分中,您将更新集群和节点池的实例类型。要更新实例类型,请执行以下步骤:
在
anthos-aws
目录中,使用anthos-gke
将上下文切换到管理服务。cd anthos-aws anthos-gke aws management get-credentials
在文本编辑器中打开创建 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
修改
AWSCluster
的spec.controlPlane.instanceType
字段。apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster ... spec: controlPlane: instanceType: AWS_INSTANCE_TYPE ...
将 AWS_INSTANCE_TYPE 替换为新的实例类型。如需了解详情,请参阅支持的实例类型。
修改
AWSNodePool
资源的spec.instanceType
字段。apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool spec: instanceType: AWS_INSTANCE_TYPE ...
保存文件。如果您使用
kubectl edit
,kubectl
会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml
使用
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
后续步骤
- 如需详细了解如何升级用户集群,请参阅升级 GKE on AWS。