使用流量記錄,將 Google Distributed Cloud (GDC) 實體隔離方案中的網路流量中繼資料 (包括 5 元組) 儲存至觀測能力堆疊,並以可查詢的記錄形式呈現。這些記錄可用於:
- 瞭解組織中特定服務的流量。
- 瞭解並找出 Kubernetes 工作負載的網路健康狀態問題。
- 驗證 Kubernetes 網路政策。
流量記錄是 GDC 功能,以開放原始碼 Hubble 專案為基礎:https://github.com/cilium/hubble。使用 Networking API 的 FlowLog 資源設定流量記錄。
事前準備
您必須取得授權,才能透過 GDC 控制台管理或查看流量記錄。如要管理流量記錄,請要求 IAM 機構管理員授予您流量記錄管理員 (
flowlog-admin) 角色。如要僅查看現有的流量記錄,請要求 IAM 機構管理員授予流量記錄檢視者 (flowlog-viewer) 角色。如要瞭解如何透過 GDC 控制台設定角色繫結,請參閱「授予資源存取權」。
您必須先取得監控執行個體的存取權,才能在資訊主頁查詢及查看流量記錄。詳情請參閱「查詢及查看指標」。
建立流量記錄
建立流量記錄,儲存依指定規格篩選的網路流量中繼資料。
建立流量記錄,並套用通訊協定和端點篩選器
建立名為
example-flowlog.yaml的檔案,並加入下列內容:apiVersion: networking.gdc.goog/v1 kind: FlowLog metadata: name: "FLOW_LOG_NAME" namespace: "platform" spec: filters: - l4Protocols: - udp endpoint: ports: - 53 lifetime: duration: "12h"將
FLOW_LOG_NAME替換為所選的流量記錄名稱。在本範例中,流量記錄會擷取通訊埠 53 上的所有 UDP 流量 (例如 DNS 流量)。物件建立 12 小時後,系統就會停止記錄。
建立流量記錄物件:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml將
MANAGEMENT_API_SERVER替換為可用區 Management API 伺服器的 kubeconfig 路徑。檢查
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-1、user-vm-2和org-1-infra。Reconciled:已成功在叢集user-vm-1、user-vm-2和org-1-infra程式化流量記錄。Logging:流程記錄未過期或停用,未發生任何錯誤,且如果篩選器與流程相符,可能會產生記錄。Start Time和End Time表示工作在19:17:53啟動,並於20:17:53到期。
如要讓這個流量記錄順利產生記錄項目,
Propagated、Reconciled和Logging條件必須全部成立。
修改流量記錄
如要修改現有的流量記錄,請在 example-flowlog.yaml 檔案中修改已建立的流量記錄物件定義,然後再次套用:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
在監控資訊主頁中查看流量記錄
開啟作業記錄資訊主頁。詳情請參閱「查詢作業記錄」。
將「identifier」下拉式選單的值設為
network-flow-logs,然後點選「add json parser」,並在查詢中提供下列值:{identifier="network-flow-logs"} | json:
按一下「Run query」(執行查詢)。畫面上會顯示已儲存的流量記錄項目:

使用篩選器進一步縮小結果範圍。 舉例來說,在「cluster」(叢集) 下拉式選單中提供
user-vm-1值,即可只查看從user-vm-1叢集收集的流量:
瀏覽流量記錄項目,展開項目查看詳細資料,並視需要使用捷徑圖示新增更多標籤篩選器。在本例中,我們想依來源 IP 位址進一步篩選流量:

按一下
+捷徑圖示,即可依特定中繼資料欄位篩選流程。
依流量記錄名稱查看結果
建立多個流量記錄時,您可以建立額外的標籤篩選器,查看一或多個流量記錄的結果。
如要只查看 FLOW_LOG_NAME 產生的記錄,請建立標籤篩選器,並設定下列值:
Label已設為On。須區分大小寫。Operator已設為~=。這會使用規則運算式比對器。Value已設為/FLOW_LOG_NAME/。FLOW_LOG_NAME值必須以/括住。
篩選結果,只查看 flowlog1 產生的記錄:

參考資料
- Hubble 動態匯出工具說明文件:https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration