Anthos clusters on AWS(GKE on AWS)の新しいバージョンが 9 月 29 日にリリースされました。詳細については、リリースノートをご覧ください。

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 で管理サービスを作成すると、AWS 上の Anthos クラスタにパブリック サブネットの踏み台インスタンスが含まれています。

管理サービスに接続するには、次の手順を行います。

  1. AWS 上の Anthos クラスタ構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。

    cd anthos-aws

  2. トンネルを開くには、bastion-tunnel.sh スクリプトを実行します。トンネルは localhost:8118 に転送されます。

    踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。

    ./bastion-tunnel.sh -N
    

    SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。

  3. 新しいターミナルを開き、anthos-aws ディレクトリに移動します。

    cd anthos-aws
  4. kubectl を使用してクラスタに接続できることを確認します。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    出力には、Management Service API サーバーの URL が含まれます。

管理サービスをアップグレードする

管理サービスをアップグレードするには、anthos-gke の新しいバージョンをダウンロードし、anthos-gke.yaml を編集して変更を適用します。

anthos-gke の新しいバージョンをダウンロードする

anthos-gke ツールの最新バージョンは aws-1.9.0-gke.2 です。anthos-gke の新しいバージョンをダウンロードする手順は次のとおりです。

  1. Cloud Storage からバイナリをダウンロードします。

    Linux

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.9.0-gke.2/bin/linux/amd64/anthos-gke .
    

    macOS

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.9.0-gke.2/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.9.0-gke.2 であることを確認します。

    anthos-gke version
    

管理サービスをアップグレードする

クラスタをアップグレードするには、次の手順を行います。

  1. Anthos clusters on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。
    cd anthos-aws
  2. テキスト エディタで anthos-gke.yaml を開きます。spec.version の値を aws-1.9.0-gke.2 に変更します。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     version: aws-1.9.0-gke.2
     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 コマンドを実行して、管理サービスのアップグレードを開始します。アップグレードが完了するまでに、最大で 10 分ほどかかる場合があります。

ユーザー クラスタ

以降のセクションでは、ユーザー クラスタをアップグレードします。

始める前に

これらの手順を完了するには、管理サービスと少なくとも 1 つのユーザー クラスタが必要です。

サポートされている Kubernetes のバージョン

Anthos clusters on AWS aws-1.9.0-gke.2 は、次の Kubernetes バージョンをサポートしています。

  • 1.18.20-gke.6300
  • 1.19.14-gke.2200
  • 1.20.10-gke.2000
  • 1.21.4-gke.2100

以前にサポートされていたバージョンについては、リリースノートをご覧ください。

コンポーネントのアップグレード

このセクションでは、AWSCluster と AWSNodePool のアップグレードについて説明します。

AWSCluster

AWSNodePool を更新せずに、AWSCluster を AWS 上の Anthos クラスタの新しいバージョンに更新できます。

AWSNodePool

AWSNodePool を AWSCluster より新しいバージョンにアップデートすることはできません。AWSNodePool を更新するには、最初に AWSCluster を更新する必要があります。

AWSNodePool のバージョンは、AWSCluster のバージョンの 2 つ前のマイナー バージョン以降でなければなりません。

既存の AWSCluster と AWSNodePool をアップグレードする

クラスタをアップグレードするには、管理サービスの AWSCluster オブジェクトと AWSNodePool オブジェクトの 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 edit

    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.21.4-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.21.4-gke.2100 です。

  4. ファイルを保存します。kubectl edit を使用している場合は、kubectl が変更を自動的に適用します。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.21.4-gke.2100 です。

  4. kubectl を使用して、新しい構成を管理サービスに適用します。

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

    これで、管理サービスにより AWSNodePool が 1 ノードずつ更新されます。ノードがシャットダウンされる前に、そのノードで実行されている Pod は SIGTERM を受け取ります。猶予期間が過ぎても Pod がシャットダウンしない場合、その Pod は SIGKILL を受け取ります。

ステータスを表示

アップグレードのステータスを取得するには、管理サービスで kubectl get AWSClusters を実行します。

env HTTPS_PROXY=http://localhost:8118 \
    kubectl get AWSClusters

出力には、各クラスタの名前、状態、経過時間、バージョン、エンドポイントが含まれます。たとえば、次の出力には cluster-0 という名前の AWSCluster が 1 つ含まれています。

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

クラスタの [状態] が [プロビジョニング済み] になったら、ユーザー クラスタのアップグレードは完了しています。