コンテナ クラスタのアップグレード

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

Kubernetes の新しいメジャー バージョンは、およそ 3 か月ごとにリリースされます。Kubernetes Engine の新しいバージョンは、各リリースのリリースノートで公開されるスケジュールに従ってロールアウトされます。新しい Kubernetes Engine クラスタは、最新の安定バージョンの Kubernetes を使用して作成されます。ただし、ノードの自動アップグレードを有効にしない限り、既存のクラスタは自動的にアップグレードされません。新しい安定バージョンの Kubernetes が利用可能になると、Kubernetes Engine は自動的にクラスタ マスターを更新します。クラスタ マスターのアップグレードを手動で開始することもできます。

ノードで実行するバージョンは、クラスタ マスターが実行しているバージョンより 2 つ前までのマイナー バージョンでなければなりません。たとえば、クラスタ マスターでバージョン 1.6 が実行されている場合、ノードでは少なくともバージョン 1.5 または 1.4 が実行されている必要があります。

クラスタについて詳しくは、コンテナ クラスタ アーキテクチャをご覧ください。

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

アップグレードを実行すると、Kubernetes Engine はスケジューリングを中止し、クラスタのすべてのノードとそのポッドを一度に 1 つずつドレインして削除します。置換先のノードは、前のノードと同じ名前で 3% ずつ再作成されます。アップグレードを完了するには、各ノードが正常に再作成される必要があります。新しいノードがマスターに登録されると、Kubernetes Engine はそれらのノードをスケジュール可能に設定します。

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

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

アップグレードの対象となる Kubernetes マスターおよびノードのバージョンを確認するには、次のコマンドを実行します。

gcloud container get-server-config --zone [COMPUTE_ZONE]

ここで、[COMPUTE_ZONE] はプロジェクトのコンピューティング ゾーンus-central1-a など)です。

サポート対象のバージョンは、リリースノートのページにも記載されています。

ダウングレード

ノードは、マスター バージョンより古いバージョンにダウングレードすることができます。

ノードの有効なバージョンのリストを表示するには、次のコマンドを実行します。

gcloud container get-server-config --zone [COMPUTE_ZONE]

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

ホストの hostPath および emptyDir ボリュームに格納されたデータは、アップグレード時に削除されます。

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

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

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

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

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

Console

GCP Console を使用してクラスタを作成するには、次の手順に従います。

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセスする

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

  3. [編集] をクリックします。
  4. [ノードプール] メニューから、目的のノードプールを選択します。
  5. [ノードのバージョン] から、[変更] をクリックします。
  6. 目的のバージョンを選択し、[変更] をクリックします。
  7. [保存] をクリックします。

gcloud

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

gcloud container clusters upgrade [CLUSTER_NAME] [--zone [COMPUTE_ZONE]]

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

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

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

[CLUSTER_VERSION] はアップグレード後のノードの Kubernetes バージョン(x.x.x 形式)です。たとえば、--cluster-version=1.7.2 のようにします。

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

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

ノードの自動アップグレードを有効にすると、Kubernetes Engine は 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 beta container operations cancel のドキュメントをご覧ください。

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

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

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

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

ここで

  • [POOL_NAME] はロールバックするノードプールの名前です。
  • [CLUSTER_NAME] はロールバックするノードプールが含まれるクラスタの名前です。

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

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

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

Console

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

  1. Google Cloud Platform Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセスする

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

  3. [クラスタ] メニューの [マスターのバージョン] で、[アップグレード可能] をクリックします。
  4. 目的のバージョンを選択し、[変更] をクリックします。

gcloud

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

gcloud container get-server-config [--zone [COMPUTE_ZONE]]

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

gcloud container clusters upgrade [CLUSTER_NAME] --master [--zone [COMPUTE_ZONE]]

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

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

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

次のステップ

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

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