使用流量記錄將網路流量中繼資料 (包括 5 元組) 儲存在 Google Distributed Cloud (GDC) 氣隙中,以可查詢記錄的形式儲存至可觀測性堆疊。這些記錄可用於:
- 瞭解機構中特定服務的流量。
- 瞭解並找出 Kubernetes 工作負載的網路健康狀態問題。
- 驗證 Kubernetes 網路政策。
流量記錄是 GDC 功能,以開放原始碼 Hubble 專案為基礎:https://github.com/cilium/hubble。使用 Networking API 中的 FlowLog
資源設定流量記錄。
事前準備
您必須取得授權,才能透過 GDC 控制台管理或查看流程記錄。 如要查看或管理流程記錄,請要求機構 IAM 管理員授予您相應的流程記錄角色。
如要瞭解如何透過 GDC 控制台設定角色繫結,請參閱「授予資源存取權」一文。
如要在資訊主頁上查詢及查看流程記錄,您必須先取得監控執行個體的存取權。詳情請參閱「查詢及查看指標」。
建立流量記錄
建立流量記錄,儲存依指定規格集篩選的網路流量中繼資料。
使用通訊協定和命名空間篩選器建立流程記錄
建立名為
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-system
或kube-system
命名空間中的任何 Pod,啟動與kube-system
命名空間中任何 Pod 的 TCP 連線,流量記錄就會擷取所有這類流量。物件建立一小時後,系統就會停止記錄。建立流量記錄物件:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
將
MANAGEMENT_API_SERVER
替換為區域管理 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
在監控資訊主頁中查看流程記錄
如要查看流程記錄,請要求具有相應流程記錄角色的使用者檢查查詢作業記錄。參考資料
- Hubble Dynamic Exporter 說明文件:https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration