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

このページでは、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(省略可)に公開し、アップグレードの開始時間、ターゲット バージョン、アップグレードされるクラスタのコントロール プレーンを通知します。GKE は、開始時間の 72 ~ 96 時間前に通知します。GKE は、スケジュールされた開始時間の 8 時間以内に、次のいずれかにアップグレードを開始します。

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

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

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

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

スケジュールされたアップグレード通知を受け取った場合の対応

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

または、アップグレードのタイミングに影響する次の操作を行うこともできます。

  • メンテナンスの除外: GKE が コントロール プレーンを自動的にアップグレードする準備ができていない場合は、メンテナンスの除外を 構成できます。これにより、スケジュールされたアップグレードが実行されなくなります。
  • メンテナンスの時間枠: メンテナンスの時間枠を構成して、GKE がクラスタを自動的にアップグレードする曜日と時間を指定することもできます。
  • 手動アップグレード: アップグレードを早めに実施する場合は、クラスタのコントロール プレーンを 手動でアップグレード できます

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

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

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

制限事項

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

    • アップグレードは正確な時間に開始されるとは限りません。8 時間の開始時間枠内でのみ開始されます。
    • 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

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

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

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

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

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

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

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

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

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

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

コンソール

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

    [Kubernetes クラスタ] に移動

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

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

gcloud

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

gcloud container clusters get-upgrade-info CLUSTER_NAME

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

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

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

コンソール

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

    [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 が使用できなくなる日を確認するなどの目的で、クラスタのマイナー バージョンのサポート終了日を確認するには、次のリソースを使用します。

次のステップ