自動アップグレードによる中断の頻度を制御する

このドキュメントでは、クラスタ中断予算のコンセプトについて説明し、環境のニーズに合わせてカスタマイズする方法について説明します。クラスタ中断予算は、プラットフォーム管理者がワークロードの中断を最小限に抑えながら、パフォーマンス、信頼性、セキュリティを強化できるようにする一連の機能の 1 つです。

クラスタのアップグレード(GKE がクラスタのコントロール プレーンとノードで使用されるバージョンを更新する場合)は、GKE クラスタの中断の主な原因となる可能性があります。アップグレードの詳細については、GKE クラスタのアップグレードについてをご覧ください。クラスタのアップグレード中に中断を最小限に抑えるための他のすべての機能については、そのドキュメントのクラスタのアップグレードを制御するセクションをご覧ください。クラスタのアップグレード以外のクラスタのライフサイクルの変更に関する一般的な情報については、クラスタのライフサイクルの変更を管理して中断を最小限に抑えるをご覧ください。

クラスタ停止予算とは

クラスタが自動アップグレードによって頻繁に中断されないように、GKE はデフォルトでクラスタ中断予算を適用して、クラスタ コントロール プレーンの自動アップグレード間の最小間隔を設定します。GKE は、クラスタの作成から最初のコントロール プレーンの自動アップグレードまでの間にもこの予算を適用します。また、クラスタ コントロール プレーンを手動でアップグレードした場合、GKE は次の自動アップグレードの実行時にクラスタ中断予算を尊重します。このアップグレードがクラスタ中断予算に違反する場合でも、クラスタはいつでも手動でアップグレードできます。

クラスタでは、GKE はノードの前にコントロール プレーンを自動的にアップグレードします。したがって、この予算はクラスタノードの自動アップグレードの最小ケイデンスも設定します。

GKE には、さまざまなタイプのバージョン アップグレードのデフォルトのクラスタ中断予算があります。

  • パッチ バージョンのアップグレード: 24 時間
  • マイナー バージョンのアップグレード: 30 日間

GKE は、同じタイプのアップグレード間で予算を適用します。たとえば、GKE は、パッチ バージョン 1.35.0-gke.1403000 と 1.35.0-gke.1624000 の間でクラスタをアップグレードする間は 24 時間、1.34 と 1.35 の間は 30 日間待機します。ただし、GKE は、マイナー アップグレードの 24 時間後にパッチ アップグレードを実行します。

GKE は、クラスタのアップグレードにのみクラスタ中断予算を使用し、GKE クラスタの他の種類の変更には使用しません。

クラスタの停止予算は、メンテナンスの時間枠と除外とは異なりますが、これらと組み合わせて使用できます。メンテナンス ポリシーは、GKE クラスタのメンテナンスを実行できるタイミングを制御しますが、クラスタ中断予算は、クラスタ アップグレード間の特定の時間間隔を設定します。

クラスタの停止予算をカスタマイズするタイミング

GKE のデフォルトのクラスタ停止予算は、アップグレードの適時性と、連続したアップグレードの回避、安定性の最適化のバランスを反映しています。ただし、これらの一般的な値はクラスタ環境に最適ではない可能性があります。

自動クラスタ アップグレード間の最小時間を制御する場合は、クラスタ中断予算を構成できます。たとえば、次のようなシナリオを考えてみましょう。

  • バージョンを本番環境に push する前に GKE コントロール プレーンのパッチ バージョンを評価するカスタム プロセスがあり、このプロセスにはデフォルトのクラスタ予算を超える特定の時間がかかります。
  • 大規模なクラスタがあり、すべてのノードプールのアップグレードに時間がかかる。これらのノードプール間でバージョンの相対的な一貫性を維持する場合。そのため、パッチ アップグレードの頻度を下げて毎月アップグレードしながら、頻繁なメンテナンスの時間枠を設定して、ノードプールのアップグレードがタイムリーに完了するようにします。

自動アップグレードのクラスタ停止予算を設定する

2 つのマイナー アップグレードまたは 2 つのパッチ アップグレードの間隔を制御する必要がある場合は、独自のクラスタ中断予算を設定できます。ただし、まず、メンテナンスの時間枠を構成して、GKE クラスタのメンテナンスの定期的な時間を設定することをおすすめします。必要に応じて、クラスタ中断予算を使用してアップグレードの間隔をカスタマイズできます。

クラスタのアップグレードを制御するには、クラスタ中断予算と、GKE が提供する他の利用可能なツールを併用することをおすすめします。これらの設定は、他のすべてのアップグレード ツールと連携して機能し、GKE がクラスタを新しいバージョンに自動アップグレードするタイミングにのみ影響します。GKE は、引き続きメンテナンスの時間枠や除外に従い、ロールアウトの順序付けを守り、通常の自動アップグレードで行われるその他の標準プラクティスも適用します。

デフォルトのクラスタ停止予算は、パッチ アップグレードの場合は 24 時間、マイナー アップグレードの場合は 30 日です。間隔は 0 ~ 90 日の任意の期間で設定できます。ただし、これらの値を更新する際は、次の点に注意する必要があります。

  • これよりも長い特定のバージョン認定プロセスがある場合を除き、パッチ アップグレードの間隔を 30 日以上に設定しないことをおすすめします。30 日未満の頻度でアップグレードすると、重要なパッチが適用されない可能性があります。
  • クラスタ環境で許容できる頻度でマイナー アップグレードを許可することをおすすめします。マイナー アップグレードの間隔を最大 90 日に設定すると、サポート終了時に GKE がクラスタをマイナー バージョンからアップグレードする必要性が高まります。GKE は、マイナー バージョンのサポートが終了すると、7 日間のマイナー アップグレード用に個別のクラスタ中断予算を適用し、構成したクラスタ中断予算は適用しません。詳細については、サポート終了時の自動アップグレードをご覧ください。
  • パッチ アップグレードの間隔は、マイナー アップグレードの間隔よりも短い期間に設定することをおすすめします。

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API を有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

クラスタ停止予算を構成する

まず、まだ設定していない場合は、メンテナンス ウィンドウを構成することをおすすめします。

次に、カスタム クラスタ中断予算を設定するには、gcloud CLI を使用してクラスタを作成または更新するときに、次のフラグを使用します。

  • マイナー アップグレード: --maintenance-minor-version-disruption-interval=MINOR_INTERVAL
  • パッチ アップグレード: --maintenance-patch-version-disruption-interval=PATCH_INTERVAL

これらのフラグでは、それぞれ MINOR_INTERVAL または PATCH_INTERVAL を、0 日(0s)から 90 日(7776000s)までの秒数で表される期間に置き換えます。

これらのフラグは、次のような状況で使用できます。

フラグは同時に使用することも、個別に使用することもできます。

クラスタ中断予算をデフォルト値にリセットする

クラスタ中断予算を、パッチ アップグレードの場合は 24 時間、マイナー アップグレードの場合は 30 日間のデフォルト値にリセットするには、次のフラグを使用します。

  • マイナー アップグレード: --clear-maintenance-minor-version-disruption-interval
  • パッチ アップグレード: --clear-maintenance-patch-version-disruption-interval

これらのフラグは、gcloud container cluster update コマンドでクラスタを更新するときに使用します。

フラグは同時に使用することも、個別に使用することもできます。