升级 GKE on AWS

如需升级 GKE on AWS 环境,请先升级管理服务,然后升级用户集群

管理服务

在以下部分中,您将升级管理服务。

准备工作

如需连接到 GKE on AWS 资源,请执行以下步骤。选择您是拥有现有 AWS VPC(或者与 VPC 的直接连接)还是在创建管理服务时创建了专用 VPC。

现有 VPC

如果您拥有与现有 VPC 的直接连接或 VPN 连接,请省略本主题的命令中的行 env HTTP_PROXY=http://localhost:8118

专用 VPC

如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中添加一个堡垒主机。

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

  1. 切换到您的 GKE 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. 切换到您的 GKE 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 版本

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。

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 字段更新为 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。

  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

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