如需升级 GKE on AWS 环境,请先升级管理服务,然后升级用户集群。
管理服务
在以下部分中,您将升级管理服务。
准备工作
如需连接到 GKE on AWS 资源,请执行以下步骤。选择您是拥有现有 AWS VPC(或者与 VPC 的直接连接)还是在创建管理服务时创建了专用 VPC。
现有 VPC
如果您拥有与现有 VPC 的直接连接或 VPN 连接,请省略本主题的命令中的行 env HTTP_PROXY=http://localhost:8118。
专用 VPC
如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中添加一个堡垒主机。
如需连接到您的管理服务,请执行以下步骤:
- 切换到您的 GKE on AWS 配置所在的目录。 您在安装管理服务时创建了此目录。 - cd anthos-aws 
- 要打开隧道,请运行 - bastion-tunnel.sh脚本。隧道会转发到- localhost:8118。- 如需打开堡垒主机的隧道,请运行以下命令: - ./bastion-tunnel.sh -N- 来自 SSH 隧道的消息会显示在此窗口中。准备好关闭连接后,请使用 Control+C 或关闭窗口来停止该进程。 
- 打开新终端并切换到您的 - anthos-aws目录。- cd anthos-aws 
- 检查您是否能够使用 - kubectl连接到集群。- env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info- 输出包括管理服务 API 服务器的网址。 
升级管理服务
如需升级管理服务,请下载新版 anthos-gke,修改 anthos-gke.yaml,然后应用更改。
下载 anthos-gke 的新版本
anthos-gke 工具的最新版本为 aws-1.14.1-gke.0。如需下载新版 anthos-gke,请执行以下步骤:
anthos-gke 命令行工具仅支持 Linux 和 macOS。
- 从 Cloud Storage 下载二进制文件。 - Linux- gcloud storage cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .- macOS- gcloud storage cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
- 更新 - anthos-gke的权限并将其复制到- /usr/local/bin。- chmod 755 anthos-gke sudo mv anthos-gke /usr/local/bin
- 确认版本为 - aws-1.14.1-gke.0- anthos-gke version
升级管理服务
如需升级集群,请执行以下步骤:
- 切换到您的 GKE on AWS 配置所在的目录。
您在安装管理服务时创建了此目录。cd anthos-aws 
- 在文本编辑器中打开 - anthos-gke.yaml。将- spec.version的值更改为 aws-1.14.1-gke.0。- apiVersion: multicloud.cluster.gke.io/v1 kind: AWSManagementService metadata: name: management spec: version: aws-1.14.1-gke.0 region: aws-region ...
- 运行 - anthos-gke aws management init以验证- AWSManagementService对象并更新- anthos-gke.status.yaml文件。- anthos-gke aws management init
- 运行 - anthos-gke aws management apply以更新 AWS 上的管理服务。- anthos-gke aws management apply- anthos-gke命令开始升级管理服务。升级最多可能需要十分钟才能完成。
用户集群
在以下部分中,您将升级用户集群。
准备工作
支持的 Kubernetes 版本
GKE on AWS aws-1.14.1-gke.0 支持以下 Kubernetes 版本:
- 1.23.15-gke.2000
- 1.24.9-gke.2100
- 1.25.5-gke.2100
如需了解以前支持的版本,请参阅版本说明。
组件升级
本部分介绍如何升级 AWSCluster 和 AWSNodePool。
AWSCluster
您可以将 AWSCluster 更新到新版 GKE on AWS,而无需更新 AWSNodePool。
AWSNodePools
您无法将 AWSNodePool 更新到比 AWSCluster 更新的版本。如需更新 AWSNodePool,您必须先更新 AWSCluster。
您的 AWSNodePool 版本不能低于 AWSCluster 版本后的两个次要版本。
升级现有 AWSCluster 和 AWSNodePool
如需升级集群,您需要更新管理服务中 AWSCluster 和 AWSNodePool 对象的 version 字段。
AWSCluster
如需升级 AWSCluster,请执行以下步骤:
- 在 - 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
- 将 - spec.controlPlane.version字段更新为 GKE on AWS 的新版本。最新版本为 1.25.5-gke.2100。- apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: cluster-0 spec: region: us-east-1 controlPlane: version: gke_version instanceType: t3.medium ...- 将 gke-version 替换为所需的 Kubernetes 版本。支持的最新 Kubernetes 版本是 1.25.5-gke.2100。 
- 保存文件。如果您使用 - kubectl edit,- kubectl会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:- env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml- 然后,管理服务会更新您的 AWSCluster。 
AWSNodePool
如需升级 AWSNodePool,请执行以下步骤:
- 在 - anthos-aws目录中,使用- anthos-gke将上下文切换到管理服务。- cd anthos-aws anthos-gke aws management get-credentials 
- 在文本编辑器中打开创建 AWSNodePool 的 YAML 文件。如果您按照创建用户集群中的说明操作,则此文件名为 - cluster-0.yaml。
- 更新 AWSNodePool 资源中的 - spec.version值。- apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: cluster-0-pool-0 spec: clusterName: cluster-0 region: us-east-1 version: gke-version ...- 将 gke-version 替换为所需的 Kubernetes 版本。支持的最新 Kubernetes 版本是 1.25.5-gke.2100。 
- 使用 - kubectl将新配置应用到管理服务。- env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml- 然后,管理服务一次一个节点地更新 AWSNodePool。在节点关闭之前,在该节点上运行的 Pod 会收到 SIGTERM。如果 Pod 在宽限期后没有关闭,则会收到 SIGKILL。 
查看状态
如需获取升级的状态,请在您的管理服务上运行 kubectl get AWSClusters。
env HTTPS_PROXY=http://localhost:8118 \
    kubectl get AWSClusters
输出包括每个集群的名称、状态、存在时间、版本和端点。例如,以下输出包含一个名为 cluster-0 的 AWSCluster。
NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Upgrading   2m41s      1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
如果集群的状态为已预配,则您的用户集群升级已完成。