管理流量記錄

使用流量記錄將網路流量中繼資料 (包括 5 元組) 儲存在 Google Distributed Cloud (GDC) 氣隙中,以可查詢記錄的形式儲存至可觀測性堆疊。這些記錄可用於:

  • 瞭解機構中特定服務的流量。
  • 瞭解並找出 Kubernetes 工作負載的網路健康狀態問題。
  • 驗證 Kubernetes 網路政策。

流量記錄是 GDC 功能,以開放原始碼 Hubble 專案為基礎:https://github.com/cilium/hubble。使用 Networking API 中的 FlowLog 資源設定流量記錄。

事前準備

  • 您必須取得授權,才能透過 GDC 控制台管理或查看流程記錄。 如要管理流量記錄,請要求機構 IAM 管理員授予流量記錄管理員 (flowlog-admin) 角色。 如要只查看現有的流程記錄,請要求機構 IAM 管理員授予您「流程記錄檢視者」(flowlog-viewer) 角色。

    如要瞭解如何透過 GDC 控制台設定角色繫結,請參閱「授予資源存取權」一文。

  • 如要在資訊主頁上查詢及查看流程記錄,您必須先取得監控執行個體的存取權。詳情請參閱「查詢及查看指標」。

建立流量記錄

建立流量記錄,儲存依指定規格集篩選的網路流量中繼資料。

使用通訊協定和命名空間篩選器建立流程記錄

  1. 建立名為 example-flowlog.yaml 的檔案,並在當中加入下列內容:

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    FLOW_LOG_NAME 替換為您選擇的流程記錄名稱。

    在本範例中,如果 gpc-systemkube-system 命名空間中的任何 Pod,啟動與 kube-system 命名空間中任何 Pod 的 TCP 連線,流量記錄就會擷取所有這類流量。物件建立一小時後,系統就會停止記錄。

  2. 建立流量記錄物件:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    MANAGEMENT_API_SERVER 替換為區域管理 API 伺服器的 kubeconfig 路徑。

  3. 檢查 Status 欄位,確認 FLOW_LOG_NAME 值已正確比對,且記錄程序已啟動:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    範例狀態:

    Status:
      Clusters:
        Cluster:  org-1-infra-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    org-1-infra
        Cluster:                 user-vm-1-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-1
        Cluster:                 user-vm-2-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-2
      Conditions:
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Active
        Status:                True
        Type:                  Logging
        Last Transition Time:  2024-01-19T01:46:11Z
        Message:
        Observed Generation:   1
        Reason:                ResourcesPropagated
        Status:                True
        Type:                  Propagated
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Succeeded
        Status:                True
        Type:                  Reconciled
      Start Time:              2024-01-18T19:17:53Z
      End Time:              2024-01-18T20:17:53Z
    

    這個範例輸出內容包含下列條件:

    • Propagated:流量記錄設定已傳送至叢集 user-vm-1user-vm-2org-1-infra
    • Reconciled:已在叢集 user-vm-1user-vm-2org-1-infra 上成功設定流程記錄。
    • Logging:流程記錄未過期或停用,也沒有發生任何錯誤,如果篩選條件與流程相符,可能會產生記錄。
    • Start TimeEnd Time 表示工作開始時間為 19:17:53,並於 20:17:53 到期。

    如要讓這項流量記錄順利產生記錄項目,必須符合所有 PropagatedReconciledLogging 條件。

修改流量記錄

如要修改現有流程記錄,請在 example-flowlog.yaml 檔案中修改已建立的流程記錄物件定義,然後再次套用:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

在監控資訊主頁中查看流程記錄

  1. 開啟作業記錄資訊主頁。詳情請參閱「查詢作業記錄」。

  2. 將「ID」下拉式選單值設為 network-flow-logs,然後按一下「新增 JSON 剖析器」,並為查詢提供下列值:{identifier="network-flow-logs"} | json

    設定 ID

  3. 按一下 [Run query] (執行查詢)。系統會顯示已儲存的流程記錄項目:

    執行查詢

  4. 使用篩選器進一步縮小結果範圍。 舉例來說,將「叢集」下拉式選單的值設為 user-vm-1,即可只查看從 user-vm-1 叢集收集的流程:

    調整篩選條件

  5. 瀏覽流程記錄項目、展開項目查看詳細資料,並視需要使用捷徑圖示新增更多標籤篩選條件。 在本例中,我們要依來源 IP 位址進一步篩選流程:

    流量記錄項目

  6. 按一下 + 捷徑圖示,即可依特定中繼資料欄位篩選流程。

    標籤篩選器捷徑

依流程記錄名稱查看結果

建立多個流程記錄時,可以建立額外的標籤篩選器,查看一或多個流程記錄的結果。

如要查看僅限 FLOW_LOG_NAME 產生的記錄,請建立標籤篩選器,並使用下列值:

  • Label」已設為「On」。這個值會區分大小寫。
  • Operator」已設為「~=」。這會使用規則運算式比對器。
  • Value」已設為「/FLOW_LOG_NAME/」。FLOW_LOG_NAME 值必須以 / 括住。

篩選結果,只顯示 flowlog1 產生的記錄:

依流程名稱篩選標籤

參考資料