このページでは、Google Kubernetes Engine(GKE)がデフォルトでクラスタ 通知を Cloud Logging に公開し、必要に応じて Pub/Subに公開する方法について説明します。これらの通知には、スケジュールされたアップグレード、利用可能なアップグレード、進行中のアップグレード、セキュリティに関する公開情報、サポート終了日など、クラスタ構成に関連するイベントに関する情報が含まれています。
概要
重要なアップグレードやセキュリティに関する公開情報など、GKE クラスタに関連する特定のイベントが発生すると、GKE はこれらの通知を Cloud Logging に送信します。Cloud Logging でこれらのログを確認するには、Cloud Logging でクラスタ通知を表示するをご覧ください。
また、GKE は、構成した Pub/Sub トピックにメッセージとしてイベントに関する通知をパブリッシュします。これらの通知を Pub/Sub サブスクリプションで受信し、サードパーティ サービスと統合して、受信したい通知タイプをフィルタできます。Pub/Sub を使用してクラスタ通知を設定する方法については、Pub/Sub を介してクラスタ通知を受信するをご覧ください。
利点
クラスタ通知には次の利点があります。
- クラスタに固有のセキュリティに関する情報が発行されたときに通知され、リスクと影響に関する正確な情報が提供されます。
- クラスタで利用可能な新しい GKE バージョンがある場合は通知が届きます。これにより、テストと認定を計画したり、アップグレードをスムーズに予測できます。以前は、GKE リリースノートまたは GKE API を確認して、新しい GKE バージョンがいつリリースされるのかを確認する必要がありました。
- GKE またはユーザーがクラスタのアップグレードを開始したときと、アップグレード オペレーションが完了したときに通知が届きます。これにより、クラスタのバックグラウンド処理をより詳しく把握できます。
- サポート終了または終了間近の GKE マイナー バージョンをクラスタが実行している場合は、通知が届きます。
Cloud Logging と Pub/Sub のどちらを使用するかは選択できます。
- クラスタ通知はデフォルトで Cloud Logging に送信されます。ログのクエリと表示、ログベースのアラート ポリシーの構成など、Cloud Logging のすべての機能を使用できます。
- Pub/Sub は拡張性が高く、受信通知をより柔軟に処理できます。たとえば、Slack と統合して通知を Slack チャンネルに転送できます。また、Cloud Run functions を起動して、カスタム プロセスを実行することもできます。カスタム プロセスが必要な場合(たとえば、本番環境ワークフローにステージングをオーケストレーションしてアップグレードをテストおよび認定する場合)、通知を使用してそれらのワークフローを自動トリガーできます。
アップグレード通知のタイプ
GKE は、次のクラスタ通知タイプを送信します。
SecurityBulletinEventUpgradeAvailableEventUpgradeEventUpgradeInfoEvent: 次の種類のイベントが含まれます。
Cloud Logging でクラスタ通知を表示する場合は、Cloud Logging の機能を使用してログをフィルタ できます 。Pub/Sub を使用している場合は、受信した通知をフィルタリングして、関連するイベントの通知だけを受け取ることができます。
SecurityBulletinEvent
GKE がクラスタの構成またはバージョンに直接関連するセキュリティに関する公開情報を発行すると、GKE から SecurityBulletinEvent 通知が送信され、脆弱性、影響、実行可能なアクション(該当する場合)に関する情報が提供されます。
UpgradeAvailableEvent
新しいバージョンがリリース チャンネルで利用可能になると、GKE はそのリリース チャンネル上のクラスタに UpgradeAvailableEvent 通知を送信し、新しいバージョンが利用可能になったことをクラスタに知らせます。この通知は、パッチ バージョンの場合は 1 週間前に、マイナー バージョン(チャンネルによって異なります)の少なくとも 2~4 週間前に事前に通知されます。詳細については、チャネルで利用可能なバージョンをご覧ください。
リリース チャネルに存在しないクラスタの場合、GKE は、クラスタがアップグレードできる新しいすべてのバージョンに関する UpgradeAvailableEvent 通知を送信します(現在のマイナー バージョンと次のマイナー バージョンへのパッチを含む)。
Windows Server ノードプールを使用している場合は、Windows のバージョン情報が UpgradeAvailableEvent 通知の一部として送信されます。
UpgradeEvent
ユーザーまたは GKE がアップグレードを開始すると、GKE から UpgradeEvent 通知が送信されます。これにより、アップグレードが開始されたことを知ることができます。理想的には、UpgradeAvailableEvent 通知タイプを使用することで、今後のアップグレードを認識し、事前にアップグレードすることや、メンテナンスの時間枠の設定などの準備に必要な対策を講じることができます。
アップグレード オペレーションの開始時に UpgradeEvent 通知が送信されます。このオペレーション ID がメッセージに渡されます。
ロールバックの安全性を備えた2 段階のコントロール プレーン マイナー アップグレード の場合、 GKE は、バイナリ アップグレードが開始されたときと、 エミュレートされたバージョン アップグレードが開始されたときに、この通知を送信します。GKE が提供する主な 詳細情報については、2 段階アップグレードの通知に含まれる情報 をご覧ください。
UpgradeInfoEvent
GKE は、次のセクションで説明するさまざまなタイプのイベントに対して UpgradeInfoEvent 通知を送信します。
特定のタイプの UpgradeInfoEvent、
のフィルタリングについて詳しくは、Filter UpgradeInfoEvent クラスタ通知 をご覧ください。
クラスタのアップグレードのスケジュール設定
GKE がクラスタのアップグレードをスケジュールすると、GKE は 72 時間から 96 時間前に通知を送信します。クラスタのアップグレードのスケジュール設定を有効にする方法については、クラスタのアップグレードのスケジュール設定に関する通知を受け取るをご覧ください。
アップグレード オペレーションの完了
GKE がクラスタのコントロール プレーンまたはノードのアップグレード オペレーション(自動または手動)を完了すると、オペレーションの完了を通知する通知が送信されます。オペレーションは次のいずれかの状態で完了します。
SUCCEEDED: GKE はコントロール プレーンまたはノードを正常にアップグレードしました。FAILED: GKE がコントロール プレーンまたはノードのアップグレードを完了しませんでした。CANCELED: 技術的な理由またはビジネス上の理由で GKE がアップグレード オペレーションをキャンセルしたか、ユーザーがアップグレード オペレーションをキャンセルしました。
通知を使用して、アップグレード オペレーションが成功したことを確認します。
2 段階アップグレードの通知に含まれる情報
ロールバックの安全性を備えた2 段階のコントロール プレーン マイナー アップグレードの場合、 GKE は、バイナリ アップグレード が完了したとき(ソーク時間が開始されたとき)と、エミュレートされた バージョン アップグレードが完了したときに、この通知を 1 回送信します。これらの通知には、2 段階アップグレードのステータスに応じて、次のような情報が含まれます。
- 初期バージョン
- ターゲット バージョン
- 初期のエミュレートされたバージョン
- ターゲットのエミュレートされたバージョン
サポート終了または終了間近のマイナー バージョン
クラスタで、標準サポートの終了または拡張サポートの終了に近い GKE マイナー バージョンが実行されている場合、またはこれらのマイルストーンに達している場合、GKE は、クラスタ コントロール プレーンまたはノードをサポート対象の次のマイナー バージョンにアップグレードする必要があることを通知します。サポート対象のマイナー バージョンを実行すると、セキュリティ パッチ、バグの修正、サポートを引き続き受けることができます。GKE は、サポート終了の 30 日前に 1 件の通知を送信し、クラスタがまだマイナー バージョンを実行している場合は、サポート終了時に 1 件の通知を送信します。
クラスタ内の複数のコンポーネントが影響を受ける可能性があり、クラスタで異なるマイナー バージョンを同時に実行している可能性もありますが、GKE はクラスタレベルの通知を送信します。マイナー バージョンの標準サポートが終了し、サポート対象バージョンへのアップグレードの準備に時間がかかる場合は、Extended リリース チャンネルに切り替えて長期サポートを受けることができます。それ以外の場合、GKE はサポート終了時の自動アップグレードをスケジュールします。これらの通知は、サポート終了ポリシーの適用に備えるうえで役立ちます。
通知には次の情報が含まれます。
- 影響を受けるクラスタ。
- サポート終了または終了間近の現在のバージョン。
- サポート終了日。
GKE マイナー バージョンのサポートのタイムラインの詳細については、GKE マイナー バージョンのライフサイクルをご覧ください。
拡張サポート期間中の新しい Container-Optimized OS マイルストーンに対する新しいパッチ バージョンの変更
拡張サポート期間中にクラスタが Extended チャンネルに登録され、GKE マイナー バージョンで使用されている Container-Optimized OS マイルストーンがマイナー バージョンより先にサポートが終了すると、GKE はクラスタ通知を送信します。GKE は、新しいマイルストーンを使用する最初のパッチ バージョンが Extended チャンネルで利用可能になると、この通知を送信します。
この通知には次の詳細情報が含まれます。
- 影響を受けるクラスタ。
- 新しいマイルストーンが使用されているパッチ バージョン。
- 既存と新規のマイルストーン。
- GKE がノードの自動パッチ アップグレードを一時停止する仕組み。
新しいマイルストーンが使用されるパッチ バージョンは、最終的にクラスタのパッチ自動アップグレードのターゲットになり、ノードの自動アップグレードは一時停止されます。クラスタ管理者は、次のどのステップを実行するかを決める必要があります。
- 次の Container-Optimized OS マイルストーンを使用する次のパッチ バージョンに、クラスタノードを手動でアップグレードする。
- クラスタを次のマイナー バージョンに手動でアップグレードする。
- 延長サポートの終了に向けて GKE がクラスタを次のマイナー バージョンにアップグレードするまで、パッチ アップグレードを行わない。
詳細については、Container-Optimized OS マイルストーンが終了 する前にマイナー バージョンの拡張サポートが終了するをご覧ください。
ノードプールのアップグレード中の破壊的イベント
ノードプールのアップグレード中にノードプールで特定の種類の破壊的イベントが発生すると、GKE はこのイベントに関する通知を送信します。
GKE は、次の種類の破壊的イベントについてクラスタ通知を送信します。
- Pod Disruption Budget(PDB)によってノードのドレインがブロックされる。
- PDB のタイムアウトに達し、PDB の違反にもかかわらず Pod が強制的に削除される。
この通知には次の詳細情報が含まれます。
- この破壊的イベントの影響を受けるノード。
- この停止イベントの影響を受ける Pod。
- ノードのドレインをトリガーしたオペレーション。
- Pod が強制的に削除される前の PDB タイムアウト。
Cloud Logging でのクラスタ通知の確認
GKE クラスタのログを表示するには、ログにアクセスするをご覧ください。
これらのログの保存をオプトアウトするには、除外フィルタを構成します。
次のフィルタを使用して Cloud Logging でログを表示し、すべてのタイプのクラスタ通知を確認します。
logName=projects/PROJECT_ID/logs/container.googleapis.com%2Fnotifications
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
次のフィルタを使用してログを表示し、特定のクラスタ通知タイプ(UpgradeEvent など)を確認します。
jsonPayload.@type=type.googleapis.com/google.container.v1beta1.NOTIFICATION_TYPE
NOTIFICATION_TYPE は、表示するログのクラスタ通知タイプに置き換えます。
UpgradeInfoEvent クラスタ通知をフィルタする
次のフィルタを使用してログを表示し、特定の UpgradeInfoEvent(アップグレード オペレーションの完了通知など)を確認します。
jsonPayload.@type=type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
jsonPayload.eventType=EVENT_TYPE
EVENT_TYPE を次のいずれかに置き換えます。
- アップグレード オペレーションの完了:
UPGRADE_LIFECYCLE - サポート終了または終了間近のマイナー バージョン:
END_OF_SUPPORT - 拡張サポート期間中の新しい Container-Optimized OS マイルストーンに対する新しいパッチ バージョンの変更:
COS_MILESTONE_VERSION_UPDATE - ノードプールのアップグレード中の破壊的イベント:
DISRUPTION_EVENT - クラスタのアップグレードのスケジュール設定:
UPGRADE_LIFECYCLE
Pub/Sub への通知のフィルタリング
クラスタ通知をフィルタリングして、Pub/Sub で必要な通知のみを受信するようにできます。通知のフィルタリングを Pub/Sub に適用するには、次のいずれかの方法を使用します。
Cloud Logging で通知を表示、フィルタするには、Cloud Logging でクラスタ通知を表示するをご覧ください。
GKE での Pub/Sub への通知のフィルタリング
クラスタ通知を有効にするときに、使用可能な 1 つ以上の通知タイプに Pub/Sub へのフィルタを設定するには、--notification-config フラグに filter の値を指定します。filter には、受信する通知タイプのパイプ( | )区切りリストを指定します。
たとえば、filter="UpgradeEvent|SecurityBulletinEvent" を指定すると、UpgradeEvent と SecurityBulletinEvent の通知タイプに関する通知のみを送信するように GKE に指示できます。
filter を使用して通知をフィルタリングすると、次のようなメリットがあります。
- 使いやすく、特定の構文を使用せずに通知タイプをフィルタリングできます。
- 除外した通知は Pub/Sub に送信されないため、配信されなかったメッセージに対して課金されることはありません。
- フィルタの構成はいつでも編集できます。
GKE で通知をフィルタリングする手順については、Pub/Sub を介してクラスタ通知を受信するをご覧ください。
GKE で通知をフィルタしても、Cloud Logging に表示されるログには影響しません。
Pub/Sub での通知のフィルタリング
Pub/Sub は、フィルタリング構文を使用したサブスクリプション メッセージのフィルタリングをサポートしています。この方法を使用すると、GKE からすべての通知タイプが Pub/Sub トピックに配信されます。Pub/Sub は、サブスクリプション構成に基づいてメッセージをフィルタリングし、必要なメッセージを配信します。
たとえば、サブスクリプションで次の構文を使用して、UpgradeEvent 通知と UpgradeAvailableEvent 通知をフィルタリングできます。
attributes.type_url = "type.googleapis.com/google.container.v1beta1.UpgradeEvent" OR "type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent"
サブスクリプションでフィルタリングされた未配信メッセージに対する請求は継続されます。サブスクリプションの構成後にフィルタを変更することもできません。ただし、GKE のフィルタリングよりも、より柔軟なフィルタリング構文を使用できます。
Pub/Sub サブスクリプションのフィルタリングの詳細については、メッセージのフィルタリングをご覧ください。
Cloud Logging でのクラスタ通知に関するアラート
特定のクラスタ イベントが発生したときに通知を受け取るように、ログベースのアラートを構成できます。次のセクションでは、ログベースのアラートを設定する基本的な例を示しますが、他の例はモニタリング ダッシュボードのサンプル リポジトリで確認できます。
ログベースのアラートを作成する
特定のアラートタイプのアラートを作成するには、次の操作を行います。次の手順では、UpgradeEvent を例として使用します。
Google Cloud コンソールで、[ログ エクスプローラ] に移動します。
[クエリ] フィールドに、選択した通知タイプでフィルタリングする次のクエリを入力します。
resource.type="RESOURCE_TYPE" log_id("container.googleapis.com/notifications") jsonPayload.@type="type.googleapis.com/google.container.v1beta1.NOTIFICATION_TYPE"次のように置き換えます。
RESOURCE_TYPE: フィルタリングするリソースタイプ(gke_cluster、gke_nodepool、またはその組み合わせなど)。NOTIFICATION_TYPE: アラートを生成するクラスタ通知タイプ(UpgradeEventなど)。
通知タイプによっては、追加のフィルタリングが必要になります。たとえば、特定のタイプの
UpgradeInfoEventをフィルタリングするには、クエリにjsonPayload.eventTypeフィルタを追加します。次のクエリの例では、イベントタイプがUPGRADE_LIFECYCLEのUpgradeInfoEventをフィルタリングします。resource.type="RESOURCE_TYPE" log_id("container.googleapis.com/notifications") jsonPayload.@type="type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent" jsonPayload.eventType="UPGRADE_LIFECYCLE"UpgradeInfoEventのフィルタリングの詳細については、UpgradeInfoEventクラスタ通知をフィルタするをご覧ください。[アクション] メニューで、[ログアラートの作成] をクリックします。
[アラートの詳細] ページで、アラート ポリシーの名前を指定し、[次へ] をクリックします。
[Define log entries to alert on] セクションに、クエリが事前入力されています。
[Extract log labels] セクションで、[Add a label] をクリックします。ログラベルを抽出すると、通知の情報をより充実させることができます。たとえば、
UpgradeEventの場合、次のラベルを追加して、アップグレードの現在のバージョンとターゲット バージョンを含めることが可能です。- CurrentVersion:
jsonPayload.currentVersion - TargetVersion:
jsonPayload.targetVersion
- CurrentVersion:
[Next] をクリックします。
通知頻度と自動クローズ期間を構成し、[Next] をクリックします。
[Who should be notified?] セクションで、アラートを受信する通知チャンネルを選択し、[Save] をクリックします。
アラートを構成すると、UpgradeEvent の通知に CurrentVersion ラベルと TargetVersion ラベルが含まれ、価値の高いコンテキストが直接通知に表示されます。
Pub/Sub メッセージの消費
Pub/Sub メッセージには、data(文字列)と attributes(文字列から文字列へのマッピング)の 2 つのフィールドがあります。
GKE 通知の場合、data フィールドには可読形式の情報が含まれています。attributes フィールドには、通知タイプ、プロジェクト ID、クラスタ名、クラスタのロケーションなどの一般的な通知情報が含まれます。attributes.payload フィールドは JSON で解析可能な文字列で、セキュリティに関する公開情報の詳細などの特定の通知情報が含まれます。
通知には常に次の属性が含まれます。
| 属性 | 説明 | 例 |
|---|---|---|
project_id |
クラスタを所有するプロジェクトの番号。 | 123456789 |
cluster_location |
クラスタのロケーション。 | us-central1-c |
cluster_name |
クラスタの名前。 | example-cluster |
type_url |
通知のタイプ。 | type.googleapis.com/google.container.v1beta1.UpgradeEvent
|
payload |
通知固有の情報を含む JSON 形式の文字列。 | { "resourceType":"MASTER", "operation":"operation-1595889094437-87b7254a", "operationStartTime":"2020-07-27T22:31:34.437652293Z", "currentVersion":"1.15.12-gke.2", "targetVersion":"1.15.12-gke.9"} |
GKE は、常に beta 通知タイプを送信します。ただし、対応する一般提供タイプがある場合は、ペイロードを解析してそのタイプを表示できます。
クラスタ通知メッセージの例
data フィールドのテキストに加えて、GKE から Cloud Logging または Pub/Sub に送信されるメッセージの attributes.type_url フィールドと attributes.payload フィールドには特定の値が含まれています。次の表に、通知タイプごとに表示される情報の例を示します。
SecurityBulletinEvent
SecurityBulletinEvent メッセージの場合、出力は次のようになります。
| 属性 | |
|---|---|
type_url |
type.googleapis.com/google.container.v1beta1.SecurityBulletinEvent |
payload |
{ "resourceTypeAffected":"RESOURCE_TYPE_CONTROLPLANE", "bulletinId":"GCP-2021-001", "cveIds":[ "CVE-2021-3156" ], "severity":"Medium", "briefDescription":"A vulnerability was recently discovered in the Linux utility sudo, described in CVE-2021-3156, that may allow an attacker with unprivileged local shell access on a system with sudo installed to escalate their privileges to root on the system.", "affectedSupportedMinors":["1.18", "1.19"], "patchedVersions":["1.18.9-gke.1900", "1.19.9-gke.1900"], "suggestedUpgradeTarget":"1.19.9-gke.1900", "bulletinUri":"https://cloud.google.com/anthos/clusters/docs/security-bulletins#gcp-2021-001" } |
UpgradeAvailableEvent
UpgradeAvailableEvent メッセージの場合、出力は次のようになります。
| 属性 | |
|---|---|
type_url |
type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent |
payload |
{ "version":"1.17.15-gke.800", "resourceType":"MASTER", "releaseChannel":{"channel":"RAPID"}, "windowsVersions": [ { "imageType": "WINDOWS_SAC", "osVersion": "10.0.18363.1198", "supportEndDate": { "day": 10, "month": 5, "year": 2022 } }, { "imageType": "WINDOWS_LTSC", "osVersion": "10.0.17763.1577", "supportEndDate": { "day": 9, "month": 1, "year": 2024 } } ] } |
UpgradeEvent
UpgradeEvent メッセージの場合、出力は次のようになります。
| 属性 | |
|---|---|
type_url |
type.googleapis.com/google.container.v1beta1.UpgradeEvent |
payload |
{ "resourceType":"MASTER", "operation":"operation-1595889094437-87b7254a", "operationStartTime":"2020-07-27T22:31:34.437652293Z", "currentVersion":"1.15.12-gke.2", "targetVersion":"1.15.12-gke.9"} |
この出力は、1 段階のコントロール プレーン アップグレードの通知を表しています。 2 段階アップグレードでは、通知に異なる情報が含まれます。さまざまなタイプのコントロール プレーン アップグレードの詳細については、クラスタのコントロール プレーンをアップグレードするをご覧ください。
UpgradeInfoEvent
アップグレード オペレーションの完了時の UpgradeInfoEvent メッセージの場合、出力は次のようになります(これは、ノードプール アップグレードの例です)。
| 属性 | |
|---|---|
type_url |
type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent |
payload |
{ "currentVersion":"1.31.1-gke.1846000", "endTime":"2024-11-06T17:12:54.111640650Z", "operation":"operation-1730912205658-de2f88a8-6290-4718-b2c1-fb19611060b8", "resource":"projects/ |
この出力は、コントロール プレーンのアップグレードの通知、サポート終了または終了間近の マイナー バージョンに関するメッセージ、拡張 サポート期間中の新しい Container-Optimized OS マイルストーンに対する新しいパッチ バージョンの変更、ノードプールのアップグレード中の破壊的イベントとは異なります。
クラスタのアップグレードのスケジュール設定に関する通知
コントロール プレーンのアップグレードがスケジュールされ、アップグレードのスケジュール設定に関する通知
が有効になっている場合、GKE は次のような出力
UpgradeInfoEvent
メッセージを送信します。
| 属性 | |
|---|---|
type_url |
type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent |
payload |
{ "insertId": "[...]", "jsonPayload": { "description": "Your cluster control plane will be upgraded to 1.32.9-gke.1239000 after 2025-12-13 12:46 UTC", "startTime": "2025-12-13T12:46:37.380970854Z", "targetVersion": "1.32.9-gke.1239000", "@type": "type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent", "currentVersion": "1.31.14-gke.1081000", "eventType": "UPGRADE_LIFECYCLE", "state": "SCHEDULED", "resourceType": "MASTER" }, "resource": { "type": "gke_cluster", "labels": { "cluster_name": " |
次のステップ
- クラスタ通知を受信する方法を確認する。
- クラスタ通知を Slack に送信する方法を確認する。
- GKE Standard クラスタのクラスタ アップグレードについて確認する。
- メンテナンスの時間枠と除外の概要を確認する。