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

このページでは、GKE クラスタでの自動アップグレードと手動アップグレードの仕組みについて説明します。関連するタスクや設定の詳細情報へのリンクも含まれています。この情報を使用すると、ワークロードの中断を最小限に抑えながら、クラスタの安定性とセキュリティを最新の状態に保つことができます。

クラスタとノードプールのアップグレードの仕組み

このセクションでは、自動アップグレード中または手動アップグレード中のクラスタの動作について説明します。自動アップグレードでは、Google が自動アップグレードを開始します。Google は、すべての GKE クラスタ全体で自動アップグレードと手動アップグレードを監視し、問題が発生したら介入します。

クラスタは、そのノードの前にアップグレードされます。

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

このセクションでは、Google がお客様のクラスタを自動アップグレードしたとき、またはお客様が手動アップグレードを開始したときの動作を説明します。

  • ゾーンクラスタとマルチゾーン クラスタにはコントロール プレーン(マスター)が 1 つしかありません。アップグレード中は、ワークロードが引き続き実行されますが、アップグレードが完了するまで、新しいワークロードのデプロイ、既存のワークロードの変更、クラスタの設定に対するその他の変更を行うことはできません。

  • リージョン クラスタにはコントロール プレーンの複数のレプリカがあり、未定義の順序で一度に 1 つずつレプリカがアップグレードされます。アップグレード中は、クラスタが高可用性を維持します。各コントロール プレーン レプリカは、そのアップグレード中にのみ使用不可になります。

メンテナンスの時間枠または除外を設定した場合には、それが可能な限り尊重されます。

ノードプールのアップグレード

クラスタとそのノードプールは、必ずしも、GKE の同じバージョンを実行するとは限りません。このセクションでは、Google がお客様のノードプールを自動アップグレードしたとき、またはお客様が手動ノードプール アップグレードを開始したときの動作について説明します。

ノードプールは一度に 1 つずつアップグレードされます。ノードプール内では、未定義の順序でノードが一度に 1 つずつアップグレードされます。一度にアップグレードされるノードの数を変更することができます。

メンテナンスの時間枠または除外を設定した場合には、それが可能な限り尊重されます。

ノードがアップグレードされると、次の動作が発生します。

  1. サージ アップグレードが有効になっている場合、GKE はワークロードの移動先となる 1 つ以上のノードを作成します。その後、GKE はアップグレードするノードを 1 つ以上選択します。
  2. ノードは閉鎖され、ドレインされます。この時点で、新しいポッドの実行をスケジュールできなくなります。
  3. ノード上のポッドは、他のノードに再スケジュールされます。ポッドを再スケジュールできない場合、そのポッドはノードが再作成されるまで PENDING 状態になります。
  4. ノードが削除され、新しいバージョンで再作成されます。
  5. 新しいノードを正常に登録できない場合、ノードプール全体の自動アップグレードが無効になります。
  6. 特定のバージョンにノードを自動アップグレードするとき、異常なノードが GKE フリート全体で多数発生した場合は、問題を調査する間、そのバージョンへのアップグレードが中断されます。

自動アップグレード

Google Cloud Console を使用してクラスタを作成すると、デフォルトでクラスタとそのノードプールの自動アップグレードが有効になります。新しい GKE バージョンが自動アップグレード用として選択されている場合は、Google がお客様のクラスタをアップグレードします。

gcloud コマンドまたは GKE API を使用してクラスタを作成した場合、現時点ではノードの自動アップグレードがデフォルトで有効になります。それを手動で無効にする方法については、ノードの自動アップグレードをご覧ください。

自動アップグレードを発生させる(または発生させない)タイミングを制御するには、メンテナンスの時間枠と除外を設定します。

クラスタ API との互換性を維持する目的で、クラスタのノードプールでは、コントロール プレーン バージョンの 2 つ前のマイナー バージョンより古いバージョンを実行できません。またノードプール バージョンは、各ノードにインストールされるソフトウェア パッケージのバージョンも決定します。ノードプールを常にクラスタ バージョンに更新し続けることをおすすめします。

リリース チャネルにクラスタを登録すると、ノードは、クラスタのコントロール プレーンのアップグレードが完了して特定のノードプールのアップグレードが開始されるまでの短期間を除き、常にクラスタ自体と同じバージョンの GKE がノードで実行されます。

バージョンが自動アップグレード用として選択される方法

新しい GKE バージョンは定期的にリリースされますが、その直後に自動アップグレード用としてバージョンが選択されるわけではありません。ある GKE バージョンが安定性を証明するのに十分なクラスタ使用量を達成したら、Google はそのバージョンを、旧バージョンのサブセットを実行するクラスタ向けの自動アップグレード ターゲットとして選択します。

新しい自動アップグレード ターゲットはリリースノートで発表されます。利用可能なバージョンが自動アップグレード用として選択されるまでの間、手動でアップグレードすることができます。クラスタ自動アップグレード対象のバージョンとノード自動アップグレード対象のバージョンが別々の週に選択される場合があります。

通常は、新しいマイナー バージョンが一般公開されるとすぐに、使用可能な最も古いマイナー バージョンがサポートされなくなります。サポートされないマイナー バージョンを実行しているクラスタは、その次のマイナー バージョンに自動的にアップグレードされます。

1 つのマイナー バージョン(v1.14.x など)の中で、クラスタが新しいパッチリリースに自動アップグレードされることがあります。

リリース チャネルを使用すると、バージョンを直接管理する代わりに、バージョンの安定性に基づいてクラスタとノードプールのバージョンを制御できます。

自動アップグレードの発生のタイミングを設定する

デフォルトで、自動アップグレードは任意の時点で発生する可能性があります。特にリージョン クラスタでは、自動アップグレードが問題になることはほとんどありません。ただし、一部のワークロードでは細かい制御が必要になる場合があります。メンテナンスの時間枠と除外を設定すると、自動アップグレードを発生させる(または発生させない)タイミングを管理できます。

手動アップグレード

いつでも、利用可能な互換性のあるバージョンにクラスタまたはそのノードプールを手動でアップグレードするようリクエストできます。手動アップグレードは、設定済みのメンテナンス時間枠とメンテナンス除外をすべてバイパスします。

クラスタを手動でアップグレードするとき、その可用性は、クラスタがリージョンであるかどうかに左右されます。

  • ゾーンクラスタとマルチゾーン クラスタの場合は、アップグレード中にコントロール プレーンが使用できなくなります。ほとんどの場合、アップグレード中はワークロードが正常に実行されますが、ワークロードを変更できません。

  • リージョン クラスタの場合は、アップグレード中に 1 つのコントロール プレーンのレプリカが使用不可になるだけで、クラスタの高可用性は維持されます。

コントロール プレーンと互換性のあるバージョンへのノードのアップグレードを手動で開始することができます。

速度と中断のバランスをとるためにアップグレード設定を変更する

ノードプールで surge upgrade パラメータを変更することによって、GKE が一度にアップグレードを試みるノードの数を変更できます。サージ アップグレードでは、クラスタ メンテナンス中のワークロードの中断が減少し、同時にアップグレードされるノードの数を制御できます。また、サージ アップグレードはクラスタ オートスケーラーと連動して、アップグレード中のノードの変更を防止します。

サージアップ グレードの動作は、次の 2 つの設定によって決まります。

max-surge-upgrade

アップグレード中にノードプールに追加可能なノードの数。max-surge-upgrade を増やすと、同時にアップグレードできるノードの数が増えます。デフォルト値は 1 です。 0 以上に設定できます。

max-unavailable-upgrade

アップグレード中に同時に使用不可になるノードの数。 デフォルト値は 0 です。max-unavailable-upgrade を増やすと、同時にアップグレードできるノードの数が増えます。

同時にアップグレードされるノードの数は、max-surge-upgrademax-unavailable-upgrade の合計です。同時にアップグレードできるノードの最大数は 20 に制限されます。

たとえば、max-surge-upgrade を 2 に設定し、max-unavailable-upgrade を 1 に設定した 5 ノードプールが作成されたとします。ノードプールのアップグレード中に、GKE は 2 つのアップグレード済みノードを作成します。アップグレード済みノードの準備ができた後、GKE は最大で 3 つ(max-surge-upgrademax-unavailable-upgrade の合計)の既存のノードを停止します。GKE は、一度に最大で 1 つのノード(max-unavailable-upgrade)だけを使用不可にします。 アップグレード プロセス中に、ノードプールには 4~7 個のノードが含まれます。

自動アップグレード手動アップグレードを使用するノードプールのサージ アップグレード パラメータを設定できます。

次のステップ