叢集通知


本頁說明 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 函式來執行自訂程序。如果需要自訂程序 (例如協調從測試到正式環境的工作流程,以測試及認證升級),您可以使用通知自動觸發這些工作流程。

升級通知類型

GKE 會傳送下列叢集通知類型:

如果在 Cloud Logging 中查看叢集通知,可以使用 Cloud Logging 的功能篩選記錄。如果您使用 Pub/Sub,可以篩選收到的通知,只接收相關事件的通知。

SecurityBulletinEvent

如果 GKE 發布的安全性公告與您的叢集設定或版本直接相關,GKE 會傳送 SecurityBulletinEvent 通知,提供有關安全漏洞、影響和可採取行動 (如適用) 的資訊。

UpgradeAvailableEvent

發布版本有新版本時,GKE 會向該發布版本中的叢集傳送 UpgradeAvailableEvent 通知,告知叢集有新版本可用。這類通知會提前一週告知修補程式版本,並提前至少 2 到 4 週告知子版本 (視管道而定)。詳情請參閱「頻道提供哪些版本」。

如果叢集未加入發布版本,GKE 會針對叢集可升級的所有新版本傳送UpgradeAvailableEvent通知,包括目前子版本和下一個子版本的修補程式。

如果您使用 Windows Server 節點集區,系統會將 Windows 版本資訊做為 UpgradeAvailableEvent 通知的一部分傳送。

UpgradeEvent

當您或 GKE 啟動升級程序時,GKE 會傳送 UpgradeEvent 通知,告知您升級程序已開始。建議您使用UpgradeAvailableEvent通知類型,瞭解即將進行的升級,以便提前升級或採取必要措施來準備,例如設定維護期間

升級作業開始時,系統會傳送 UpgradeEvent 通知。 作業 ID 會在訊息中傳遞。

UpgradeInfoEvent

GKE 會針對不同類型的事件傳送 UpgradeInfoEvent 通知,詳情請參閱下節。

如要進一步瞭解如何篩選特定類型的 UpgradeInfoEvent,請參閱「篩選 UpgradeInfoEvent 叢集通知」。

升級作業完成

當 GKE 完成自動或手動升級叢集控制層或節點的操作時,GKE 會傳送通知,告知您操作已完成。作業完成時會處於下列其中一種狀態:

  • SUCCEEDED:GKE 已成功升級控制層或節點。
  • FAILED:GKE 無法升級控制層或節點。
  • CANCELED:GKE 因技術或業務原因取消升級作業,或您取消升級作業

使用通知確認升級作業是否成功。

子版本即將或已經終止支援

如果叢集執行的 GKE 子版本即將結束標準支援延長支援,或已達到上述任一里程碑,GKE 會傳送通知,要求您將叢集控制層或節點升級至下一個支援的子版本。執行支援的次要版本,可確保您繼續接收安全性修補程式、錯誤修正及支援。如果叢集仍執行該子版本,GKE 會在支援期結束前 30 天和支援期結束時,各傳送一則通知。

GKE 會傳送叢集層級的通知,但叢集的許多元件可能會受到影響,且叢集可以同時執行不同的次要版本。如果次要版本即將結束標準支援,且您需要時間準備升級至支援的版本,可以切換至延長發布版本,取得長期支援。否則,GKE 會在支援期結束時安排自動升級。這些通知可確保您已做好準備,因應這些終止支援政策的實施。

通知包含下列詳細資料:

  • 受影響的叢集。
  • 目前版本即將或已經終止支援。
  • 支援終止日期。

如要進一步瞭解 GKE 子版本的支援時間表,請參閱 GKE 子版本生命週期

在延長支援期間,新修補程式版本會改為新的 Container-Optimized OS 里程碑

如果叢集在延長支援期間註冊於延長版,且 GKE 子版本使用的 Container-Optimized OS 里程碑在子版本之前終止支援,GKE 會傳送叢集通知。當 Extended 通道中出現第一個使用新里程碑的修補程式版本時,GKE 就會傳送這項通知。

這類通知包含下列詳細資料:

  • 受影響的叢集。
  • 使用新里程碑的修補程式版本。
  • 現有和新的里程碑。
  • GKE 如何暫停節點的自動修補程式升級作業。

使用新里程碑的修補程式版本最終會成為叢集的修補程式自動升級目標,節點自動升級作業也會暫停。叢集管理員必須決定採取下列哪一個後續步驟:

  • 手動將叢集節點升級至下一個修補程式版本,該版本會使用下一個 Container-Optimized OS 里程碑。
  • 手動將叢集升級至下一個子版本。
  • 在延長支援期即將結束時,GKE 會將叢集升級至下一個子版本,因此您不必升級修補程式。

詳情請參閱「Container-Optimized OS 里程碑在子版本延長支援期結束前,即達到支援期限」。

在 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 替換為下列其中一個值:

篩選要傳送至 Pub/Sub 的通知

您可以篩選叢集通知,確保只在 Pub/Sub 中接收需要的通知。您可以透過下列任一方式,為 Pub/Sub 通知套用篩選器:

如要在 Cloud Logging 中查看及篩選通知,請參閱「在 Cloud Logging 中查看叢集通知」。

在 GKE 中篩選 Pub/Sub 通知

啟用叢集通知時,您可以透過在 --notification-config 旗標中指定 filter 的值,為一或多個可用的通知類型設定 Pub/Sub 篩選條件。filter 會接收以管道 ( | ) 分隔的通知類型清單。

舉例來說,指定 filter="UpgradeEvent|SecurityBulletinEvent" 會告知 GKE 只傳送 UpgradeEventSecurityBulletinEvent 通知類型的通知。

使用 filter 篩選通知有以下優點:

  • 使用更簡單,因為您不必使用特定語法,即可依通知類型篩選。
  • 系統絕不會將您篩除的通知傳送至 Pub/Sub,因此您不會因未傳送的訊息而產生費用。
  • 您隨時可以編輯篩選器設定。

如需在 GKE 中篩選通知的操作說明,請參閱「透過 Pub/Sub 接收叢集通知」。

在 GKE 中篩選通知不會影響 Cloud Logging 顯示的記錄。

篩選 Pub/Sub 通知

Pub/Sub 支援使用篩選語法,篩選訂閱項目中的訊息。使用這個方法時,GKE 會將所有類型的通知傳送至 Pub/Sub 主題。Pub/Sub 會根據訂閱設定篩選訊息,並傳送您想接收的訊息。

舉例來說,您可以在訂閱項目中使用下列語法,篩選 UpgradeEventUpgradeAvailableEvent 通知:

attributes.type_url = "type.googleapis.com/google.container.v1beta1.UpgradeEvent" OR "type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent"

系統仍會針對訂閱方案篩除的未送達訊息收費。訂閱設定完成後,您也無法修改篩選器。不過,篩選語法比 GKE 中的篩選功能更具擴充性。

如要進一步瞭解如何篩選 Pub/Sub 訂閱項目,請參閱「篩選訊息」。

取用 Pub/Sub 訊息

Pub/Sub 訊息包含兩個欄位:data (字串) 和 attributes (字串對應至字串的對應)。

如果是 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通知類型。不過,如果酬載可用,您可以剖析酬載來顯示對應的 Google Analytics 通知類型。

叢集通知訊息範例

除了 data 欄位中的文字,GKE 傳送至 Cloud Logging 或 Pub/Sub 的每則訊息,在 attributes.type_urlattributes.payload 欄位中都有特定值。下表列出各類通知可能提供的資訊範例:

SecurityBulletinEvent

如果 a SecurityBulletinEvent message,輸出內容會類似如下:

屬性
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"}
      

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/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME",
  "resourceType":"NODE_POOL"
  "startTime":"2024-11-06T16:56:45.658321844Z",
  "state":"SUCCEEDED",
  "targetVersion":"1.31.1-gke.2105000"}
      

這類輸出內容與次要版本支援期限即將結束時,或新修補程式版本在延長支援期間改用新的 Container-Optimized OS 里程碑時的訊息不同。

後續步驟