使用流日志将网络流量元数据(包括 5 元组)以可查询日志的形式保存到 Google Distributed Cloud (GDC) 气隙中的可观测性堆栈。您可以使用这些日志执行以下操作:
- 了解组织中特定服务的流量。
- 了解并识别 Kubernetes 工作负载的网络健康问题。
- 验证 Kubernetes 网络政策。
流量日志是一项基于开源 Hubble 项目的 GDC 功能: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替换为所选的流日志名称。在此示例中,流日志会捕获所有流,这些流的 TCP 连接是由
gpc-system或kube-system命名空间中的任何 pod 启动的,并且目标是kube-system命名空间中的任何 pod。它会在对象创建后一小时停止记录日志。创建流日志对象:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml将
MANAGEMENT_API_SERVER替换为区域管理 API 服务器的 kubeconfig 路径。验证
FLOW_LOG_NAME值是否已正确协调,并通过检查Status字段来验证日志记录进程是否已启动: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 动态导出器文档:https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration