メンテナンス イベントをモニタリングする

このドキュメントでは、コマンドラインと GKE メンテナンス ダッシュボードを使用してホスト メンテナンス オペレーションを表示する方法について説明します。

ホスト メンテナンス オペレーションを表示すると、ワークロードの中断を軽減できます。特に、定期的なインフラストラクチャの中断によって中断される可能性のあるワークロードを含む、長時間実行される GKE クラスタで効果的です。

GKE でのホスト メンテナンスの詳細については、GKE でホスト メンテナンスを行う方法を理解するをご覧ください。

メンテナンス通知をモニタリングする

VM でメンテナンス イベントがスケジュールされると、Compute Engine からすべての VM にプッシュ通知が送信され、Compute Engine メンテナンスの時間枠の開始時刻が報告されます。今後のメンテナンスが VM によってスケジュールされたが有効になっていない場合、GKE はノードラベルに scheduled-maintenance-time を追加します。

今後のメンテナンス イベントをモニタリングして検出するには、GKE と Compute Engine の両方からの通知を表示する必要があります。

Compute Engine で今後のメンテナンスを確認する

Compute Engine では、中断を伴うホストイベントがノードとその基盤となる VM でスケジュールされたときと有効になったときに、通知が出されます。通知には、予定されている開始時刻やイベントの種類などの情報が含まれます。

GKE の今後のメンテナンスを確認する

特定のマシンタイプについて、GKE で今後のメンテナンス イベントをモニタリングできます。次の表に、サポートされているマシンタイプと、それぞれに必要な GKE の最小バージョンを示します。

マシンタイプ 最小 GKE バージョン
GPU または TPU がアタッチされたマシンタイプ 1.31.1-gke.2008000 以降
H4D マシンタイプ 1.32.6-gke.1060000 以降
c4a-highmem-96-metal 1.35.0-gke.2232000 以降
18 TiB を超える Titanium SSD を備えた Z3 マシンタイプ 1.32.4-gke.1376000 以降
42 TiB を超える Titanium SSD がアタッチされている Z4D マシンタイプ 1.36.3-gke.1244000 以降
48 TiB を超える Titanium SSD がアタッチされている Z4M マシンタイプ、または Cloud RDMA を使用する Z4M インスタンス 1.36.3-gke.1767000 以降

今後のメンテナンス イベントを表示するには、次のいずれかを行います。

  • ノードレベルで通知をクエリします。具体的には、次のコマンドを実行します。

    kubectl get nodes -l cloud.google.com/scheduled-maintenance-time \
        -L cloud.google.com/scheduled-maintenance-time
    

    出力は次のようになります。

    NAME                         STATUS    SCHEDULED-MAINTENANCE-TIME
    <gke-accelerator-node-name>  Ready     1733083200
    <gke-accelerator-node-name>  Ready     1733083200
    [...]
    

    SCHEDULED-MAINTENANCE-TIME 列は秒を表し、Unix エポック時間の形式で表示されます。

  • インスタンスでメンテナンス イベント通知を確認して、ノード メタデータのレベルでこれらの通知をクエリします。

  • 高度なメンテナンスに対応するアクセラレータ最適化マシン ファミリーでは、スケジュールされたメンテナンス イベントと開始されたメンテナンス イベントに関する情報を提供する upcoming-maintenance エンドポイントにアクセスできます。

ホスト メンテナンスの Kubernetes イベントを表示する

GKE バージョン 1.35 以降では、ホスト メンテナンスのライフサイクルを追跡する Kubernetes イベントが出力されます。これらの Kubernetes イベントにより、スケジュールされた Compute Engine ウィンドウ、進行中のオペレーション、修復やキャンセルなどのエッジケースを詳細に把握できるため、Kubernetes 環境内で中断を直接モニタリングできます。

これらのイベントは、標準の Kubernetes ツールまたは Cloud Logging を使用して表示できます。

  1. 最近のメンテナンス イベントを表示するには、次の kubectl コマンドを使用します。

    kubectl get events -n kube-system --field-selector involvedObject.kind=Node
    

    Kubernetes イベントはクラスタに 60 分間保持されるため、このコマンドはノードごとに最近のイベントのみを出力します。

  2. Cloud Logging でイベントを表示する手順は次のとおりです。

    1. Cloud de Confiance コンソールの [ログ エクスプローラ] ページに移動します。

      [ログ エクスプローラ] に移動

    2. 次のクエリを使用してください。

    resource.type="k8s_node"
    log_id("events")
    jsonPayload.metadata.annotations."maintenance.gke.io/category"="HostMaintenance"
    

メンテナンス ライフサイクル イベント

メンテナンス ライフサイクル イベントは、Kubernetes ノードリソースで出力されます。次の表に、Compute Engine ホスト メンテナンスのライフサイクル中に GKE によって出力されるイベントを示します。

理由 説明
MaintenanceWindowScheduled ノードの Compute Engine ホスト メンテナンスの時間枠がスケジュールされています
MaintenanceWindowCancelled ノードで Compute Engine ホストのメンテナンスの時間枠がクリアされました
MaintenanceWindowRescheduled 以前にスケジュールされた Compute Engine ホストのメンテナンスの時間枠が移動され、メンテナンスの開始時間が更新されました
CustomerTriggeredMaintenance Compute Engine ホスト メンテナンスが GKE を介して手動でトリガーされた
MaintenanceWindowStarted Compute Engine ホスト メンテナンスが開始されました
TerminateOnHostMaintenance Compute Engine が終了シグナル(TERMINATE_ON_HOST_MAINTENANCE)を発行したときに生成されます。正常終了が有効になっている場合、GKE はノードを閉鎖し、Pod のエビクション(SIGTERM)をスケジュールします。ワークロードは、マシンティアに応じて 5 ~ 60 分の通知上限を受け取ります。
PodEvictionComplete すべての Pod がノードから正常に強制排除された
MaintenanceWindowCleared Compute Engine のホスト メンテナンスが完了し、ノードが準備完了状態に戻った。

イベント ペイロード情報

今後のメンテナンス イベントに関する情報が Compute Engine から入手できる場合、各イベントには、次の情報を含むアノテーション データを含むペイロードも含まれます。

  • Compute Engine ウィンドウの詳細: windowStartTime、windowEndTime、latestWindowStartTime が含まれます。
  • メンテナンス メタデータ: イベント発生時のメンテナンス サイクルのステータス、メンテナンスの理由(SCHEDULED または UNSCHEDULED として表示される場合があります)、Compute Engine ウィンドウで再スケジュールできるかどうか。
  • Kubernetes メタデータ: Cluster_name、nodepool_name、node_name が含まれます。

GKE メンテナンス ダッシュボードでのホスト メンテナンス オペレーションの表示

GKE メンテナンス ダッシュボードには、ホスト メンテナンス オペレーションの統合ビューが表示されます。このダッシュボードでは、クラスタ、ノードプール、ノードレベルでのメンテナンス アクティビティを包括的に把握できます。

このダッシュボードはオブザーバビリティ分析を基盤に構築されています。メンテナンス サイクル、ノードのステータス、過去のダウンタイム指標が表示されます。

次のステップ