升级 Anthos clusters on AWS

如需升级 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 会在公共子网中添加一个堡垒主机。

如需连接到您的管理服务,请执行以下步骤:

  1. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。

    cd anthos-aws

  2. 要打开隧道,请运行 bastion-tunnel.sh 脚本。隧道会转发到 localhost:8118

    如需打开堡垒主机的隧道,请运行以下命令:

    ./bastion-tunnel.sh -N
    

    来自 SSH 隧道的消息会显示在此窗口中。准备好关闭连接后,请使用 Control+C 或关闭窗口来停止该进程。

  3. 打开新终端并切换到您的 anthos-aws 目录。

    cd anthos-aws
  4. 检查您是否能够使用 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。

  1. 从 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 .
    
  2. 更新 anthos-gke 的权限并将其复制到 /usr/local/bin

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. 确认版本为 aws-1.14.1-gke.0

    anthos-gke version
    

升级管理服务

如需升级集群,请执行以下步骤:

  1. 切换到您的 Anthos clusters on AWS 配置所在的目录。您在安装管理服务时创建了此目录。
    cd anthos-aws
  2. 在文本编辑器中打开 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
     ...
    
  3. 运行 anthos-gke aws management init 以验证 AWSManagementService 对象并更新 anthos-gke.status.yaml 文件。

    anthos-gke aws management init
    
  4. 运行 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

如需升级集群,您需要更新管理服务中 AWSClusterAWSNodePool 对象的 version 字段。

AWSCluster

如需升级 AWSCluster,请执行以下步骤:

  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. 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。

  4. 保存文件。如果您使用 kubectl editkubectl 会自动应用更改。如果您要修改 YAML 文件,请使用以下命令将其应用于您的管理服务:

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl apply -f cluster-0.yaml
    

    然后,管理服务会更新您的 AWSCluster。

AWSNodePool

如需升级 AWSNodePool,请执行以下步骤:

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

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

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

  3. 更新 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。

  4. 使用 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-0AWSCluster

NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Upgrading   2m41s      1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com

如果集群的状态已预配,则您的用户集群升级已完成。