クラスタのアップグレードの可視性を高める

このページでは、Google Kubernetes Engine(GKE)クラスタのアップグレードに関する情報を取得する方法について説明します。GKE は、時間の経過とともにすべてのクラスタを自動的にアップグレードします。GKE がクラスタをアップグレードする際、GKE は Kubernetes コントロール プレーンとワーカーノードのバージョンを個別のオペレーションで更新します。

GKE は、クラスタのアップグレードに関する情報を集約して、クラスタのステータスを把握できるようにします。クラスタの次の情報を取得できます。

  • スケジュールされたアップグレード(プレビュー: GKE は、クラスタ コントロール プレーンの自動アップグレードクラスタ ノードの自動アップグレードの少なくとも 72 時間前に通知します。スケジュールされたアップグレードを有効にすると、GKE は定期的にクラスタを自動的にアップグレードしますが、この事前通知の後にのみアップグレードします。事前に通知されない場合、クラスタは自動的にアップグレードされません。
  • 自動アップグレードのターゲット: GKE がクラスタのターゲットとする新しいバージョン(クラスタの既存のバージョンと制約に応じた、パッチまたは新しいマイナー バージョンのいずれか)を確認します。自動アップグレード ターゲットがない場合、クラスタはすでに最新のアップグレード ターゲット上にあるか、技術的な理由またはビジネス上の理由で GKE が自動アップグレード ターゲットを割り当てていません。GKE リリースノートのバージョン アップデート2024-R33 ノートなど)で、クラスタのマイナー バージョンに基づいて一般的な自動アップグレード ターゲットを取得することもできます。
  • 自動アップグレードのステータス: GKE クラスタは、クラスタのアップグレードのステータスを持ちます。このステータスを使用して、現在のアップグレードと、クラスタを自動的にアップグレードするタイミングを選択する際に GKE が考慮する制約(メンテナンスの除外やアップグレードを妨げる理由など)を確認します。詳細については、クラスタの自動アップグレードのステータスをご覧ください。
  • アップグレード履歴: GKE は、クラスタの最近のコントロール プレーン アップグレードとノード アップグレード(自動アップグレードと手動アップグレードの両方)のスナップショットを提供します。コントロール プレーンとノードの最近のアップグレードについては、次のような詳細を確認できます。

    • バージョン: 初期バージョンとターゲット バージョン。
    • 状態: アップグレードがまだ完了していないかどうか、あるいは成功、失敗、キャンセルのいずれであるか。
    • 時間: 開始時間と終了時間。
    • 開始タイプ: アップグレードが自動的にトリガーされたか手動でトリガーされたか。
  • サポート終了日: GKE はマイナー バージョンを最長 24 か月間サポートします。詳細については、GKE のマイナー バージョン ライフサイクルをご覧ください。現在のすべてのマイナー バージョンのサポート終了日については、リリース チャンネルのおおよそのスケジュールをご覧ください。

  • クラスタ イベント: GKE は、アップグレードの開始または完了、新しいバージョンのリリース、セキュリティに関する公開情報、サポート終了日などの特定のイベントについて、Cloud Logging にクラスタ通知を送信します。GKE は Cloud Logging でこれらのイベントを自動的に表示しますが、これらの通知を Pub/Sub に転送することもできます。詳細については、クラスタ通知をご覧ください。

始める前に

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

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

スケジュール設定されたクラスタ アップグレードに関する通知を受け取る

GKE のスケジュールされたアップグレードを有効にすると、次のタイプのクラスタの自動アップグレードについて事前に通知を受け取ることができます。

このオプトイン機能を有効にすると、GKE はクラスタ通知を Cloud Logging に公開します。必要に応じて、Pub/Sub にも公開し、次の情報を通知します。

  • クラスタ名。
  • アップグレード ウィンドウの開始時刻。コントロール プレーンの場合は 8 時間、ノードの場合は 10 日間です。
  • ターゲット バージョン。
  • 影響を受けるノードプール(ノードのアップグレードの場合): 各通知は単一の自動アップグレード ターゲットを対象とし、アップグレードがスケジュールされているノードプールを最大 10 個リストします。この自動アップグレード ターゲットを共有するすべてのノードプールがアップグレードされます。リストに表示されているノードプールだけではありません。特定のノードプールが影響を受けるかどうかを確認するには、ノードプールのアップグレード情報を取得して、自動アップグレード ターゲットが通知のターゲットと一致することを確認します。

GKE は、開始時間の 72 ~ 96 時間前に通知します。GKE は、コントロール プレーンのアップグレードまたはノードのアップグレードを、8 時間(コントロール プレーン)または 10 日間(ノード)の開始時間枠内で、次のいずれかに開始します。

  • 通知に記載されている GKE バージョン
  • アップグレード前にパッチがクラスタのリリース チャンネルで自動アップグレードの対象になった場合、同じマイナー バージョンの新しいパッチ

スケジュールされたアップグレード通知により、GKE がコントロール プレーンまたはノードプールのアップグレードを開始するタイミングを確実に把握できます。ただし、この通知は、GKE が指定された時間にクラスタをアップグレードすることを保証するものではありません。また、通知はアップグレードの開始時期のみを知らせるもので、アップグレードが完了するかどうかを保証するものではありません。

この機能を有効にして、クラスタに多数のノードがある場合は、ノードのアップグレードがクラスタ環境で許容される範囲でできるだけ早く完了するように、ノードプールの同時アップグレードを構成することをおすすめします。

この機能を有効にしない場合でも、GKE はクラスタ コントロール プレーンを自動的にアップグレードします。ただし、この機能がない場合のデフォルトの動作では、スケジュールされたアップグレードの通知は事前に届きません。

次のセクションでは、スケジュール設定されたアップグレードの通知を受け取ったときに実行できる操作と実行できない操作、および GKE が指定された時間にクラスタをアップグレードしない可能性があるその他の理由について説明します。

スケジュールされたアップグレードの通知が届いた場合の対処方法

通知に記載されている時間に予定されているアップグレードを進める準備ができている場合は、GKE が自動アップグレードを開始したときにクラスタ環境とワークロードの健全性をモニタリングする以外に、対応は必要ありません。

また、次の操作を行うと、アップグレードのタイミングに影響します。

GKE がスケジュール設定されたアップグレードを実行しない理由

通知が送信されてからアップグレードが開始されるまでの間に、バージョンに関する問題が確認された場合、GKE は指定された時間枠でスケジュールされたアップグレードを実行しないことがあります。詳細については、クラスタの次のアップグレードをブロックしている原因を確認するをご覧ください。

ノードのアップグレードでは、GKE は同じ自動アップグレード ターゲットを持つすべてのノードプールを集約した通知を送信します。この場合、GKE は 10 日間の期間が終了する前にすべてのアップグレードを開始できない可能性があります。ノードプールが多いクラスタや、アップグレードに時間がかかるノードプール(ノードが多い大規模なノードプールなど)では、このシナリオが発生する可能性が高くなります。ノードのアップグレードに時間がかかる可能性があるこれらのクラスタでは、GKE が 10 日間の期間内に複数のノードプールを同時にアップグレードできるように、ノードプールの同時アップグレードを構成することをおすすめします。

ユーザーの操作、時間制限、その他の予期しない状況により、GKE がスケジュールされたアップグレードをキャンセルした場合や、実行できない場合は、アップグレードのスケジュールが変更されたときに、別のクラスタ通知が送信されます。

制限事項

  • ロールアウト シーケンスを使用して、スケジュールされたアップグレードを有効にすることはできません。
  • スケジュールされたアップグレードがキャンセルされた場合、GKE は通知を送信しません。GKE は、新しいスケジュールされたアップグレードの通知のみを送信します。
  • スケジュールされたアップグレードを有効にすると、通知を有効にしていない場合よりも自動アップグレードの完了に時間がかかることがあります。この影響が発生するのは、アップグレードごとに、GKE が 72 時間以上の通知を提供し、開始時間枠と、クラスタに構成されている場合はメンテナンスの時間枠を遵守する必要があるためです。クラスタでアップグレードを最大限の効率で実行する必要がある場合、特にノードプールが多い場合やノードプールが大きい場合は、同時ノードプール アップグレードを構成することもおすすめします。また、必要に応じて手動アップグレードを使用してアップグレードを進めることもできます。
  • 1,000 個を超えるノードプールがあるクラスタでは、スケジュールされたアップグレードを有効にしないでください。
  • GKE は、コントロール プレーンとノードのアップグレードを含むバージョン アップグレードについてのみ事前通知を提供し、他のタイプのノード更新については提供しません。アップグレード(バージョン アップデート)と他のタイプのアップデートの違いについては、クラスタのライフサイクルの変更を管理して中断を最小限に抑えるをご覧ください。
  • Terraform を使用してスケジュールされたアップグレードを有効または無効にすることはできません。
  • スケジュールされたアップグレード通知は、自動クラスタ コントロール プレーンまたはノードのアップグレードが事前通知なしに開始されないことを保証するだけです。ただし、通知は次のことを保証するものではありません。

    • アップグレードが正確な時間に開始されることは保証されません。コントロール プレーンのアップグレードの場合は 8 時間の開始ウィンドウ内、ノードのアップグレードの場合は 10 日間の開始ウィンドウ内でのみ開始されます。
    • GKE がその時間枠内でアップグレードを開始することは保証されていません。詳細については、GKE がスケジュールされたアップグレードを実行しない理由をご覧ください。
    • リリース チャンネルに同じマイナー バージョンの新しいパッチ自動アップグレード ターゲットがある場合、GKE がコントロール プレーンまたはノードプールを正確なパッチ バージョンに自動的にアップグレードするとは限りません。

スケジュールされたアップグレードを有効にする

スケジュールされたアップグレードを有効にします。CLUSTER_NAME は、クラスタの名前に置き換えます。

gcloud beta container clusters update CLUSTER_NAME
   --enable-scheduled-upgrades

スケジュールされたアップグレードを有効にすると、Cloud Logging で通知を表示するか、Pub/Sub で通知を構成できます。詳細については、クラスタ通知をご覧ください。

また、クラスタに多数のノードがある場合は、クラスタ環境で許容される範囲でノードのアップグレードをできるだけ早く完了できるように、ノードプールの同時アップグレードを構成することをおすすめします。

スケジュールされたアップグレードの通知を受け取ったら、スケジュールされたアップグレードの通知を受け取った場合の対応を確認してください。

スケジュールされたアップグレードを無効にする

スケジュールされたアップグレードを無効にします。CLUSTER_NAME はクラスタの名前に置き換えます。

gcloud beta container clusters update CLUSTER_NAME
   --disable-scheduled-upgrades

この機能を無効にすると、GKE はスケジュールされたアップグレードについて通知しなくなります。

クラスタのアップグレードに関する情報を取得する

クラスタのアップグレードに関する情報は、Google Cloud コンソールまたは gcloud CLI を使用して事前に取得できます。

プロジェクト レベルでアップグレードに関する情報を取得する

プロジェクト全体のクラスタ アップグレードに関する集計情報を取得するには、[アップグレード] ダッシュボードを使用します。

Google Cloud コンソールで [アップグレード] ダッシュボードに移動します。

[アップグレード] に移動

このダッシュボードのタブには、次のようなアップグレードに関する関連情報が集約されます。

  • コントロール プレーンとノードの最近のアップグレードのステータス
  • アップグレードのクラスタ通知ログ
  • アップグレードに関連する推奨事項
  • 特定のマイナー バージョンのサポート終了タイムライン
  • 各リリース チャンネルのクラスタ数

クラスタレベルでアップグレード情報を取得する

コンソール

  1. Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。

    [Kubernetes クラスタ] に移動

  2. クラスタの名前を選択して、[クラスタの詳細] ページを表示します。

  3. [クラスタの詳細] ページの [クラスタのアップグレード] セクションを確認します。

gcloud

次のコマンドを実行します。

gcloud container clusters get-upgrade-info CLUSTER_NAME

CLUSTER_NAME は、クラスタの名前に置き換えます。

Standard クラスタのノードプールのアップグレード情報を取得する

Standard クラスタの個々のノードプールの公開設定を取得できます。このセクションは、GKE がノードを管理し、管理対象のノードプールがない Autopilot クラスタには適用されません。

コンソール

  1. Google Cloud コンソールで [Kubernetes クラスタ] ページに移動します。

    [Kubernetes クラスタ] に移動

  2. クラスタの名前をクリックして、詳細を表示します。

  3. [ノード] タブをクリックします。

  4. [ノードプール] セクションで、アップグレード情報を取得するノードプールの名前をクリックします。

  5. [ノードプールの詳細] ページの [アップグレード] セクションを確認します。

gcloud

次のコマンドを実行します。

gcloud container node-pools get-upgrade-info POOL_NAME
    --cluster=CLUSTER_NAME

POOL_NAME は、ノードプールの名前に置き換えます。

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

クラスタの自動アップグレードのステータスは次のとおりです。

  • ACTIVE: アクティブなアップグレード ステータス。
  • UNKNOWN: アップグレード ステータスが不明。
  • MINOR_UPGRADE_PAUSED: マイナー バージョンのアップグレードが一時停止中。
  • UPGRADE_PAUSED: すべての自動アップグレードが一時停止中。

GKE がクラスタの自動アップグレードを一時停止する可能性がある理由は次のとおりです。

  • MAINTENANCE_WINDOW: メンテナンスの時間枠によりクラスタのアップグレードが妨げられている。
  • MAINTENANCE_EXCLUSION_: この接頭辞が付いた一時停止の理由は、メンテナンスの除外によってクラスタのアップグレードが妨げられていることを示している。接尾辞はメンテナンスの除外のスコープを示す(MAINTENANCE_EXCLUSION_NO_UPGRADES など)。
  • CLUSTER_DISRUPTION_BUDGET: クラスタの作成やアップグレードなどの特定のオペレーションの後、クラスタとそのアプリケーションの安定性と可用性を保護するために、クラスタにはクールダウン期間が必要。
  • CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE: クラスタがマイナー バージョン アップグレードのクラスタ停止予算の範囲外。
  • SYSTEM_CONFIG: 技術的またはビジネス上の理由により、自動アップグレードが一時停止中。このステータスでは、必要な場合を除き、手動アップグレードを行わないことをおすすめします。
  • AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED: 理由不明。

クラスタ アップグレードの一般的なシナリオに関する情報

クラスタ アップグレードの管理中に発生する可能性のある一般的なシナリオについて説明します。

クラスタの次回のアップグレードの予定を確認する

新しいバージョンへのアップグレードの計画と選定のためにクラスタの次回のアップグレードの予定を確認するには、次のリソースを使用します。

  • リリース スケジュール: リリース チャンネルのおおよそのスケジュールで、クラスタのマイナー バージョンとリリース チャンネルに対応する自動アップグレードの推定日付を確認します。
  • クラスタレベルでアップグレード情報を取得する: クラスタの自動アップグレード ターゲットを確認します。
  • クラスタ通知: 新しいバージョンがチャンネルで利用可能になると、GKE から通知が送信されます。新しいバージョンが利用可能になると、GKE はチャンネルの自動アップグレード ターゲットとしてそのバージョンを指定します。タイミングはチャンネルによって異なります。これらの通知を表示するには、Cloud Logging でクラスタ通知を表示するときに UpgradeAvailableEvent でフィルタします。
  • リリースノート: リリースノートで、GKE が新しいマイナー バージョンをチャンネルの自動アップグレード ターゲットとして設定するタイミングを確認できます。

クラスタの次のアップグレードをブロックしている原因を確認する

アップグレードのブロックを解除するためにブロックされている理由を確認するには、クラスタの自動アップグレードのステータスを確認します。自動アップグレードが一時停止されている場合は、その理由を確認します。次のいずれかの方法を使用します。

クラスタのアップグレードが完了するタイミングを確認する

ワークロードが想定どおりに動作することを確認するためにクラスタのコントロール プレーンとノードのアップグレードが完了するタイミングを確認するには、次のリソースを使用します。

アップグレードにかかる時間を確認する

アップグレードにかかる時間を確認するには、クラスタレベルでアップグレード情報を取得して、過去のアップグレードの所要時間を調べます。アップグレード履歴で最近の例を確認します。

アップグレードの所要時間は、アップグレードの対象がコントロール プレーンであるかノードであるかに加え、アップグレード戦略、Pod Disruption Budget(PDB)、有効なメンテナンス ポリシーなどの要因によって異なります。

クラスタのマイナー バージョンのサポート終了日を確認する

GKE は、サポートが終了したマイナー バージョンをまだ実行しているクラスタを自動的にアップグレードします。詳細については、サポート終了時の自動アップグレードをご覧ください。

メンテナンスの除外を設定する、非推奨の API が使用できなくなる日を確認するなどの目的で、クラスタのマイナー バージョンのサポート終了日を確認するには、次のリソースを使用します。

次のステップ