このドキュメントでは、コマンドラインと 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 を使用して表示できます。
最近のメンテナンス イベントを表示するには、次の
kubectlコマンドを使用します。kubectl get events -n kube-system --field-selector involvedObject.kind=NodeKubernetes イベントはクラスタに 60 分間保持されるため、このコマンドはノードごとに最近のイベントのみを出力します。
Cloud Logging でイベントを表示する手順は次のとおりです。
Cloud de Confiance コンソールの [ログ エクスプローラ] ページに移動します。
次のクエリを使用してください。
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 メンテナンス ダッシュボードには、ホスト メンテナンス オペレーションの統合ビューが表示されます。このダッシュボードでは、クラスタ、ノードプール、ノードレベルでのメンテナンス アクティビティを包括的に把握できます。
このダッシュボードはオブザーバビリティ分析を基盤に構築されています。メンテナンス サイクル、ノードのステータス、過去のダウンタイム指標が表示されます。
次のステップ
- ホスト メンテナンス中のノードの中断を管理する方法を確認する。
- アクセラレータ ワークロードを実行しているノードのホスト メンテナンスを実行する方法を確認する。
- GKE メンテナンスの時間枠と除外の詳細。