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

このドキュメントでは、クラスタ停止予算の概念について説明し、環境のニーズに合わせてカスタマイズする方法について説明します。クラスタ停止予算は、プラットフォーム管理者がワークロードの停止を最小限に抑えながら、パフォーマンス、信頼性、セキュリティを向上させるための機能スイートの 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 コマンドでクラスタを更新する場合は、これらのフラグを使用します。

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