このドキュメントでは、コマンドラインと 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 バージョン 1.31.1-gke.2008000 以降では、特定のマシンタイプについて、今後のメンテナンス イベントをモニタリングできます。
- 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 以降。
- 41 TiB を超える Titanium SSD がアタッチされている Z4D マシンタイプの場合、1.36.3-gke.1244000 以降。
今後のメンテナンス イベントを表示するには、次のいずれかを行います。
ノードレベルでクエリ通知を行います。具体的には、次のコマンドを実行します。
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 はノードを cordon し、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 メンテナンス ダッシュボードには、ホスト メンテナンス オペレーションの統合ビューが表示されます。このダッシュボードでは、クラスタ、ノードプール、ノードレベルでのメンテナンス アクティビティを包括的に把握できます。
このダッシュボードは Observability Analytics を基盤に構築されています。メンテナンス サイクル、ノードのステータス、過去のダウンタイム指標が表示されます。
次のステップ
- ホスト メンテナンス中のノードの中断を管理する方法を確認する。
- アクセラレータ ワークロードを実行するノードのホスト メンテナンスを行う方法を確認する。
- GKE メンテナンスの時間枠と除外について学習する。