クラスタのアップグレード

このページでは、Google Kubernetes Engine クラスタが実行する Kubernetes のバージョンをアップグレードまたはダウングレードする方法について説明します。

クラスタ マスターとノードで Kubernetes のバージョンを使用可能にする方法については、バージョニングとアップグレードをご覧ください。クラスタについて詳しくは、クラスタ アーキテクチャを参照してください。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

クラスタのアップグレードについて

クラスタのアップグレードは、クラスタのマスターとそのノードのアップグレードを含む 2 段階のプロセスです。クラスタのマスターとノードの両方を同時にアップグレードすることはできません。

Google がクラスタ マスターを自動的にアップグレードしますが、手動でアップグレードすることもできます。

クラスタノードをアップグレードすると、GKE は新しいポッドのスケジュールを停止し、既存のポッドを別のノードで再スケジュールし、クラスタのすべてのノードを 1 つずつ削除します。ポッドの削除に 10 分以上かかる場合、GKE はポッドを強制的に終了させ、ノードをシャットダウンして削除します。置換先のノードは、前のノードと同じ名前で再作成されます。アップグレードは、すべてのノードが再作成され、クラスタが目的の状態になったときにはじめて完了します。新しいノードがマスターに登録されると、GKE はそれらのノードをスケジュール可能に設定します。

新しいノード インスタンスでは、目的の Kubernetes バージョンと次のものが実行されます。

サポート対象のバージョン

アップグレードとダウングレードでサポートされている Kubernetes のマスターおよびノードのバージョンを確認するには、次のコマンドを実行します。

gcloud container get-server-config

クラスタをダウングレードすることはおすすめしません。ノードは、マスター バージョンより古いパッチ バージョンにダウングレードできます。クラスタをマイナー バージョン間でダウングレードすることはできません。たとえば、クラスタで GKE 1.11.5 を実行している場合、まだ利用可能であれば 1.11.4 にダウングレードできますが、1.10.9 にはダウングレードできません。次のようなエラーが生成されます。

ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.10.9-gke.7": specified version is not
newer than the current version.

クラスタを以前のパッチ バージョンにダウングレードするには、gcloud コマンドライン ツールを使用してクラスタ マスター バージョンを更新します。

GKE バージョンは、サポート対象のバージョンのスケジュールに従ってロールアウトされます。ロールアウトがすべてのゾーンに到達するまでに数日かかります。gcloud container get-server-config を使用して、ゾーンまたはリージョンで利用可能なバージョンを確認できます。

データを永続ディスクに保存する

ノードプールをアップグレードする前に、保持したいデータが、永続ディスクを使用する永続ボリュームを使用したポッドに保存されていることを確認する必要があります。永続ディスクは、アップグレード時にデータを消去せずにマウント解除され、そのデータはポッド間で「引き渡され」ます。

永続ディスクには次の制限があります。

  • ポッドを実行しているノードが Compute Engine VM であること
  • これらの VM が永続ディスクと同じ Compute Engine プロジェクトおよびゾーンに存在すること

既存のノード インスタンスに永続ディスクを追加する方法については、永続ディスクの追加またはサイズ変更をご覧ください。

ノードを手動でアップグレードする

Google Cloud Platform Console または gcloud コマンドライン ツールを使用して、ノードを手動でアップグレードできます。

gcloud

次のコマンドは、ノードをマスターで実行されているバージョンにアップグレードします。

gcloud container clusters upgrade [CLUSTER_NAME]

[CLUSTER_NAME] はアップグレードするクラスタの名前です。

Kubernetes の特定のリリースをインストールするには、オプションの --cluster-version フラグを使用します。

gcloud container clusters upgrade [CLUSTER_NAME] --cluster-version [CLUSTER_VERSION]

[CLUSTER_VERSION] は、ノードがアップグレードされる Kubernetes バージョンです。たとえば、--cluster-version=1.7.2cluster-version=latest です。

バージョンの指定について詳しくは、バージョニングとアップグレードのドキュメントをご覧ください。

詳細については、gcloud container clusters upgrade のドキュメントをご覧ください。

Console

GCP Console を使用してクラスタをアップグレードするには、次の手順に従います。

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 鉛筆の形をしたクラスタの [編集] ボタンをクリックします。

  3. [ノードプール] セクションで、アップグレードするノードプールの開示矢印を展開します。

  4. [ノードのバージョン] の横にある [変更] リンクをクリックします。

  5. 目的のバージョンを選択し、[変更] をクリックします。

  6. [保存] をクリックします。

ノードの自動アップグレードを行う

ノードの自動アップグレードを有効にすると、GKE は Kubernetes の新しいバージョンが利用可能になるたびにノードの Kubernetes バージョンをアップグレードします。

ノードの自動アップグレードを有効にするには、ノードの自動アップグレードのドキュメントをご覧ください。

アップグレード ステータスを確認する

gcloud beta container operations を使用してアップグレードのステータスを確認できます。

クラスタ内の実行中のオペレーションと完了したオペレーションの全リストを表示するには、次のコマンドを実行します。

gcloud beta container operations list

各オペレーションには、開始時刻と終了時刻、ターゲット クラスタ、ステータスとともに、オペレーション ID とオペレーション タイプが割り当てられています。このリストの表示例を次に示します。

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

特定のオペレーションに関する詳細情報を取得するには、次のコマンドでオペレーション ID を指定します。

gcloud beta container operations describe [OPERATION_ID]

例:

gcloud beta container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

ノードのアップグレードをキャンセルする

アップグレードはいつでもキャンセルできます。アップグレードをキャンセルすると、次のようになります。

  • アップグレードを開始したノードのアップグレードは完了します
  • アップグレードを開始していないノードはアップグレードされません
  • アップグレードがすでに完了したノードは影響を受けず、ロールバックされません

まず、次のコマンドを使用してアップグレードのオペレーション ID を取得します。

gcloud container operations list

次に、次のコマンドを実行してアップグレードをキャンセルします。

gcloud beta container operations cancel [OPERATION_ID]

gcloud container operations cancel のドキュメントをご覧ください。

ノードのアップグレードをロールバックする

アップグレードに失敗したノードプールまたはアップグレードがキャンセルされたノードプールを以前のバージョンの Kubernetes にロールバックできます。正常にアップグレードされたノードプールをロールバックすることはできません。アップグレードを開始していないノードは影響を受けません。

アップグレードをロールバックするには、次のコマンドを実行します。

gcloud container node-pools rollback [POOL_NAME] --cluster [CLUSTER_NAME]

ここで

  • [POOL_NAME] はロールバックするノードプールの名前です。
  • [CLUSTER_NAME] はロールバックするノードプールが含まれるクラスタの名前です。
  • [COMPUTE_ZONE] はプロジェクトのコンピューティング ゾーンです。

gcloud container node-pools rollback のドキュメントをご覧ください。

手動でマスター アップグレードを開始する

クラスタ マスター アップグレードを開始するとき、コントロール プレーンが再びアクセス可能になるまで、クラスタの構成を数分間変更できません。マスター アップグレード中のダウンタイムを防ぐ必要がある場合は、リージョン クラスタの使用を検討してください。

GCP Console または gcloud コマンドライン ツールを使用して、マスターを手動でアップグレードできます。クラスタのマスターをアップグレードすると、ノードを同じバージョンにアップグレードできます。

gcloud

クラスタ マスターのバージョンをアップグレードするには、まず次のコマンドを実行して利用可能なバージョンを表示します。

gcloud container get-server-config

最新バージョンにアップグレードするには、次のコマンドを実行します。

gcloud container clusters upgrade [CLUSTER_NAME] --master

デフォルトではない特定のバージョンにアップグレードするには、次のコマンドを実行します。

gcloud container clusters upgrade [CLUSTER_NAME] --master --cluster-version [CLUSTER_VERSION]

gcloud container clusters upgrade のドキュメントをご覧ください。

Console

クラスタ マスターを手動で更新するには、次の手順に従います。

  1. Google Cloud Platform Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 目的のクラスタを選択します。

  3. [マスターのバージョン] の横にある [アップグレード可能] リンクをクリックします。

  4. 目的のバージョンを選択し、[変更] をクリックします。

  5. 画面の上部にある矢印をクリックして、クラスタの概要ページに戻ります。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント