このページでは、GKE on AWS クラスタの Kubernetes バージョンをアップグレードする方法について説明します。
前提条件
クラスタの Kubernetes バージョンのアップグレードは、一般的なクラスタ更新オペレーションの特殊なケースです。クラスタ更新オペレーションの概要については、クラスタを更新するをご覧ください。クラスタのバージョンをアップグレードするには:
- 現在のバージョンからターゲット バージョンまでのマイナー バージョンを順番にアップグレードしていく必要があります。たとえば、1.20 から 1.22 にアップグレードする場合は、まず 1.20 から 1.21 にアップグレードし、次に 1.21 から 1.22 にアップグレードします。
gkemulticloud.googleapis.com/awsClusters.update
の Identity and Access Management 権限が必要です。
GKE on AWS が更新を行う仕組み
クラスタのアップグレードではコントロール プレーン ノードを再起動する必要があります。このため、GKE on AWS は次のようにローリング アップデートを実行します。
- 更新するコントロール プレーン インスタンスを 1 つ選択します。異常なインスタンスがある場合、GKE on AWS は、正常なインスタンスよりもそちらを先に更新します。
- インスタンスに新しい起動テンプレートを作成します。
- 自動スケーリング グループの起動テンプレートを更新します。
- インスタンスを削除します。AWS がインスタンスを再作成し、そのインスタンスが新しい構成で起動します。
- 新しいインスタンスにヘルスチェックを行います。
- ヘルスチェックが成功した場合は、別のインスタンスを選択して、同じ手順を繰り返します。すべてのインスタンスが再起動または再作成されるまで、このサイクルを繰り返します。ヘルスチェックが失敗した場合、GKE on AWS はクラスタを
DEGRADED
状態にし、更新を停止します。詳しくは次のセクションをご覧ください。 - 元の起動テンプレートを削除します。
更新に失敗した場合
更新後、GKE on AWS はクラスタでヘルスチェックを実行します。ヘルスチェックに失敗した場合は、クラスタが DEGRADED
とマークされます。クラスタのステータスは、次の Google Cloud CLI コマンドで確認できます。
gcloud container aws clusters describe CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前GOOGLE_CLOUD_LOCATION
: クラスタを管理する Google Cloud リージョン
アップグレードを実行する
クラスタのバージョンを確認する
クラスタのバージョンをアップグレードする前に、次のコマンドを使用して、リージョンで使用可能なバージョンを確認します。
gcloud container aws get-server-config \
--location=GOOGLE_CLOUD_LOCATION
GOOGLE_CLOUD_LOCATION
は、クラスタを管理する Google Cloud のロケーションに置き換えます。
アップグレード方法を選択する
クラスタのバージョンは、Google Cloud コンソール、Google Cloud CLI、または GKE Multi-Cloud API を使用してアップグレードできます。コンソールを使用してクラスタをアップグレードする場合は、まず、クラスタにログインするための認証方法を選択して構成する必要があります。詳細については、クラスタに接続して認証するをご覧ください。
コンソール
Google Cloud コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。
クラスタが存在する Google Cloud プロジェクトを選択します。
クラスタのリストでクラスタの名前を選択し、サイドパネルで [詳細を表示] を選択します。
[詳細] タブで、[
アップグレード] を選択します。[クラスタの Kubernetes バージョンのアップグレード] ダイアログ ボックスで、アップグレードするバージョンを選択して [完了] をクリックします。クラスタをアップグレードする場合は、すべてのマイナー バージョンをアップグレードする必要があります。
gcloud
クラスタの Kubernetes バージョンをアップグレードするには、次のコマンドを実行します。
gcloud container aws clusters update CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--cluster-version=CLUSTER_VERSION
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前GOOGLE_CLOUD_LOCATION
: クラスタを管理するサポート対象の Google Cloud リージョン(例:us-west1
)CLUSTER_VERSION
: 新しいサポート対象のクラスタ バージョン
API
API を使用してクラスタを更新するには、GKE Multi-Cloud API で PATCH
オペレーションを使用します。
cluster_update.json
という名前の JSON ファイルを作成し、次の内容を追加します。{ "controlPlane": { "version": "CLUSTER_VERSION", }, }
次のように置き換えます。
CLUSTER_VERSION
: 新しいサポート対象のクラスタ バージョン。クラスタをアップグレードする場合は、すべてのマイナー バージョンをアップグレードする必要があります。
次のコマンドで GKE Multi-Cloud API を使用してこれらの設定を更新します。
curl -d @cluster_update.json -X PATCH \ ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters/CLUSTER_ID?update_mask=controlPlane.Version
次のように置き換えます。
ENDPOINT
: Google Cloud サービスのエンドポイントPROJECT_ID
: Google Cloud プロジェクトGOOGLE_CLOUD_LOCATION
: クラスタを管理するサポート対象の Google Cloud リージョン(例:us-west1
)CLUSTER_ID
: クラスタ ID
詳細については、projects.locations.awsClusters.patch
メソッドのドキュメントをご覧ください。
ノードプールをアップグレードする
クラスタのバージョンをアップグレードしたら、ノードプールをアップグレードして処理を完了します。方法については、ノードプールを更新するをご覧ください。
次のステップ
他のクラスタの更新方法を確認する。
gcloud container aws clusters update
リファレンス ドキュメントで、更新可能なフィールドの詳細を確認する。projects.locations.awsClusters.patch
REST API のドキュメントを確認する。