如需升级 Anthos clusters on AWS (GKE on AWS) 环境,请先升级管理服务,然后升级用户集群。
管理服务
在以下部分中,您将升级管理服务。
准备工作
如需连接到 Anthos clusters on AWS 资源,请执行以下步骤。选择您是拥有现有 AWS VPC(或者与 VPC 的直接连接)还是在创建管理服务时创建了专用 VPC。
现有 VPC
如果您拥有与现有 VPC 的直接连接或 VPN 连接,请省略本主题的命令中的行 env HTTP_PROXY=http://localhost:8118
。
专用 VPC
如果您在专用 VPC 中创建管理服务,则 Anthos clusters on AWS 会在公共子网中添加一个堡垒主机。
如需连接到您的管理服务,请执行以下步骤:
切换到您的 Anthos clusters 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
gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
macOS
gsutil 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
升级管理服务
如需升级集群,请执行以下步骤:
- 切换到您的 Anthos clusters 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 版本
Anthos Clusters 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 更新到新版 Anthos clusters on AWS,而无需更新 AWSNodePool。
AWSNodePool
您无法将 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
字段更新至新版本的 Anthos clusters 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
如果集群的状态为已预配,则您的用户集群升级已完成。