8.2. 从流量流视图观察网络流量
流量流 视图显示网络流的数据以及表中的流量数量。作为管理员,您可以使用流量流表监控应用程序间的流量数量。
8.2.1. 使用流量流视图 复制链接链接已复制到粘贴板!
作为管理员,您可以进入 流量流 表来查看网络流信息。
流程
-
进入到 Observe
Network Traffic。 - 在 Network Traffic 页面中,点 流量流 选项卡。
您可以点击每行来获取对应的流信息。
8.2.2. 为流量流视图配置高级选项 复制链接链接已复制到粘贴板!
您可以使用 Show advanced options 自定义和导出视图。您可以使用 Display options 下拉菜单设置行大小。默认值为 Normal。
8.2.2.1. 管理列 复制链接链接已复制到粘贴板!
您可以选择显示所需的列,并对它们进行重新排序。若要管理列,可点 Manage 列。
8.2.2.2. 导出流量流数据 复制链接链接已复制到粘贴板!
您可以从流量流视图导出数据。
流程
- 点 Export data。
- 在弹出窗口中,您可以选择 Export all data 复选框,以导出所有数据,然后清除复选框以选择要导出的必填字段。
- 单击 Export。
8.2.3. 使用 FlowCollector 自定义资源配置 IPsec 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中,默认禁用 IPsec。您可以按照"配置 IPsec 加密"中的说明启用 IPsec。
前提条件
- 您已在 OpenShift Container Platform 上启用 IPsec 加密。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
为 IPsec 配置
FlowCollector
自定义资源:IPsec 的
FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
启用 IPsec 时:
- Network Observability Traffic flows 视图中会显示一个名为 IPsec Status 的新列,以显示流是否已成功 IPsec 加密,或者在加密/解密过程中出现错误。
- 显示生成加密流量百分比的新仪表板。
8.2.4. 使用对话跟踪 复制链接链接已复制到粘贴板!
作为管理员,您可以对属于同一对话的网络流进行分组。对话被定义为一组由 IP 地址、端口和协议标识的对等点,从而产生唯一的 Conversation Id。您可以在 web 控制台中查询对话事件。这些事件在 web 控制台中表示,如下所示:
- Conversation start :连接启动或 TCP 标记被截获时发生此事件
-
Conversation tick:此事件在连接处于活跃状态时根据
FlowCollector
spec.processor.conversationHeartbeatInterval
参数中定义的每个指定间隔发生。 -
Conversation end :当达到
FlowCollector
spec.processor.conversationEndTimeout
参数或 TCP 标志被截获时,会发生此事件。 - Flow :这是在指定间隔内的网络流量流。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源,以便根据您的观察需求设置spec.processor.logTypes
,conversationEndTimeout
, 和conversationHeartbeatInterval
参数。示例配置示例如下:配置
FlowCollector
以对话跟踪Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 当
logTypes
设置为Flows
时,只会导出 Flow 事件。如果将值设为All
,则会在 Network Traffic 页面中导出并看到对话和流事件。要只专注于对话事件,您可以指定Conversations
,它会导出 Conversation start, Conversation tick and Conversation end 事件;或指定EndedConversations
,它只导出 Conversation end 事件。All
对于存储的请求最高,EndedConversations
对于存储的要求最低。 - 2
- Conversation end 事件表示达到了
conversationEndTimeout
,或 TCP 标志被截获。 - 3
- Conversation tick 事件表示当网络连接活跃时,在
FlowCollector
conversationHeartbeatInterval
参数中定义的每个指定间隔。
注意如果您更新了
logType
选项,则之前选择中的流不会从控制台插件中清除。例如,如果您最初将logType
设置为Conversations
,持续到 10 AM,然后移到EndedConversations
,控制台插件会显示 10 AM 之前的所有对话事件,且仅在 10 AM 后终止对话。-
刷新 Traffic flows 标签页中的 Network Traffic。通知请注意,有两个新列: Event/Type 和 Conversation Id。当
Flow
是所选查询选项时,所有 Event/Type 字段都是 Flow。 - 选择 Query Options 并选择 Log Type,Conversation。现在,Event/Type 会显示所有所需的对话事件。
- 接下来,您可以过滤侧面板中的 Conversation 和 Flow 日志类型选项的特定 对话 ID 或切换。
8.2.5. 使用数据包丢弃 复制链接链接已复制到粘贴板!
当网络流数据的一个或多个数据包无法访问其目的地时,会发生数据包丢失。您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪这些丢弃。
启用此功能时,CPU 和内存用量会增加。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
为数据包丢弃配置
FlowCollector
自定义资源,例如:FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关数据包丢弃的新信息:
- 在 Manage 面板中选择新选择,以选择要在 Overview 中显示的数据包丢弃的图形视觉化。
在 Manage 列中选择新选择,以选择要在流量流表中显示哪些数据包丢弃信息。
-
在 流量流视图 中,您还可以展开侧面板来查看有关数据包丢弃的更多信息。主机丢弃的带有
SKB_DROP
前缀,OVS drops 带有OVS_DROP
前缀。
-
在 流量流视图 中,您还可以展开侧面板来查看有关数据包丢弃的更多信息。主机丢弃的带有
- 在 Topology 视图中,会显示红色的行,其中出现 drops。
8.2.6. 使用 DNS 跟踪 复制链接链接已复制到粘贴板!
使用 DNS 跟踪,您可以监控网络、进行安全分析并对 DNS 问题进行故障排除。您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪 DNS。
启用这个功能时,在 eBPF 代理中观察到 CPU 和内存用量。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 Network Observability 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源。示例配置示例如下:为 DNS 跟踪配置
FlowCollector
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 刷新 Network Traffic 页面时,您可以选择在 Overview 和 Traffic Flow 视图和可以应用的新过滤器中查看新的 DNS 表示。
- 在 Manage 面板中选择新的 DNS 选项,在 Overview 中显示图形视觉化和 DNS 指标。
- 在 Manage 列中选择新选择,将 DNS 列添加到 流量流视图 中。
- 过滤特定 DNS 指标,如 DNS Id、DNS Error DNS Latency 和 DNS Response Code,并在侧面面板中查看更多信息。默认情况下会显示 DNS Latency 和 DNS Response Code 列。
TCP 握手数据包没有 DNS 标头。在 DNS Latency、ID 和 响应代码 值 "n/a" 的流量流中会显示没有 DNS 标头的 TCP 协议流。您可以过滤掉流数据,以只查看使用通用过滤器 "DNSError" 等于 "0" 的 DNS 标头的流。
8.2.7. 使用 RTT 追踪 复制链接链接已复制到粘贴板!
您可以通过将 FlowCollector
编辑到以下 YAML 示例中的规格来跟踪 RTT。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
为 RTT 追踪配置
FlowCollector
自定义资源,例如:FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您可以通过列出
spec.agent.ebpf.features
规格列表中的FlowRTT
参数来启动追踪 RTT 网络流。
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关 RTT 的新信息:
- 在 Overview 中,在 Manage 面板中选择新选择,以选择要显示的 RTT 的图形视觉化。
- 在 Traffic flows 表中,可以看到 Flow RTT 列,您可以在 Manage 列中管理显示。
在 流量流视图 中,您还可以展开侧面板来查看有关 RTT 的更多信息。
过滤示例
-
点 Common 过滤
Protocol。 - 根据 TCP、Ingress 方向过滤网络流数据,并查找大于 10,000,000 纳秒(10ms)的 FlowRTT 值。
- 删除 Protocol 过滤。
- 在 Common 过滤器中过滤大于 0 的 Flow RTT 值。
-
点 Common 过滤
- 在 Topology 视图中,点 Display 选项下拉菜单。然后点 edge labels 下拉列表中的 RTT。
8.2.8. 使用 eBPF Manager Operator 复制链接链接已复制到粘贴板!
eBPF Manager Operator 通过管理所有 eBPF 程序来减少攻击面,并确保合规性、安全性和冲突防止。网络可观察性可以使用 eBPF Manager Operator 来加载 hook。因此,您不再需要为 eBPF Agent 提供特权模式或其他 Linux 功能,如 CAP_BPF
和 CAP_PERFMON
。只有 64 位 AMD 架构上才支持带有网络可观察性的 eBPF Manager Operator。
带有网络可观察性的 eBPF Manager Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
流程
-
在 Web 控制台中,进入到 Operators
Operator Hub。 - 安装 eBPF Manager。
-
检查
bpfman
命名空间中的 WorkloadsPods,以确保它们都已启动并运行。 配置
FlowCollector
自定义资源以使用 eBPF Manager Operator:FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
在 Web 控制台中,进入到 Operators
Installed Operators。 点 eBPF Manager Operator
All instances 选项卡。 对于每个节点,验证名为
netobserv
的BpfApplication
和BpfProgram
对象的对,一个用于流量控制(TCx) ingress,另一个用于 TCx egress。如果启用其他 eBPF Agent 功能,可能会有更多对象。
8.2.8.1. 使用直方图 复制链接链接已复制到粘贴板!
您可以点 Show histogram 来显示工具栏视图,以使用栏图的形式可视化流历史记录。histogram 显示一段时间内的日志数量。您可以选择直方图的一部分在下面的工具栏中过滤网络流数据。
8.2.9. 使用可用区 复制链接链接已复制到粘贴板!
您可以配置 FlowCollector
以收集有关集群可用区的信息。这可让您使用应用到节点的 topology.kubernetes.io/zone
标签值增强网络流数据。
流程
-
在 Web 控制台中,进入 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 cluster,然后选择 YAML 选项卡。
配置
FlowCollector
自定义资源,使spec.processor.addZone
参数设置为true
。示例配置示例如下:为可用区集合配置
FlowCollector
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
刷新 Network Traffic 页面时,Overview、Traffic Flow 和 Topology 视图会显示有关可用区的新信息:
- 在 Overview 选项卡中,您可以将 Zones 视为可用 Scope。
-
在 Network Traffic
Traffic flows 中,Zone 可以在 SrcK8S_Zone 和 DstK8S_Zone 字段下查看。 - 在 Topology 视图中,您可以将 Zones 设置为 Scope 或 Group。
8.2.10. 使用多个规则过滤 eBPF 流数据 复制链接链接已复制到粘贴板!
您可以配置 FlowCollector
自定义资源,使用多个规则过滤 eBPF 流,以控制在 eBPF 流表中缓存的数据包流。
- 您不能在过滤规则中使用重复的无类别域间路由(CIDR)。
- 当 IP 地址与多个过滤器规则匹配时,具有最具体 CIDR 前缀(前缀最长)的规则具有优先权。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 Network Observability 的 Provided APIs 标题下,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
-
配置
FlowCollector
自定义资源,类似以下示例配置:
示例 YAML 示例,以对所有北流量进行抽样,以及 1:50 个东部流量
默认情况下,所有其他流都会被拒绝。
- 1
- 要启用 eBPF 流过滤,将
spec.agent.ebpf.flowFilter.enable
设置为true
。 - 2
- 要为流过滤器规则定义操作,请设置所需的
action
参数。有效值为Accept
或Reject
。 - 3
- 要为流过滤器规则定义 IP 地址和 CIDR 掩码,请设置所需的
cidr
参数。这个参数支持 IPv4 和 IPv6 地址格式。若要匹配任何 IP 地址,请将0.0.0.0/0
用于 IPv4,对于 IPv6,则使用'::/0
。 - 4
- 要为匹配流定义抽样率并覆盖全局抽样设置
spec.agent.ebpf.sampling
,请设置sampling
参数。 - 5
- 要根据 Peer IP CIDR 过滤流,请设置
peerCIDR
参数。
使用数据包丢弃过滤流的 YAML 示例
默认情况下,所有其他流都会被拒绝。
8.2.11. 端点转换(xlat) 复制链接链接已复制到粘贴板!
您可以使用 Network Observability 和扩展的 Berkeley Packet Filter (eBPF)了解集成视图中的端点服务流量。通常,当流量流通过服务、egressIP 或负载均衡器时,流量流信息会被抽象到其中一个可用 pod。如果您尝试获取有关流量的信息,则只能查看服务相关信息,如服务 IP 和端口,而不获取有关服务请求的特定 pod 的信息。通常,服务流量和虚拟服务端点的信息都捕获为两个独立的流,这导致故障排除变得复杂。
要解决这个问题,端点 xlat 可通过以下方式帮助:
- 捕获内核级别的网络流,这会影响性能。
- 使用转换的端点信息增强网络流,仅显示服务,以及特定的后端 pod,以便您可以查看提供请求的 pod。
在处理网络数据包时,eBPF hook 会增强流日志,其中包含有关转换端点的元数据,其中包括您可以在一行中的 Network Traffic 页中查看以下信息:
- 源 Pod IP
- 源端口
- 目标 Pod IP
- 目的端口
- Conntrack Zone ID
8.2.12. 使用端点转换(xlat) 复制链接链接已复制到粘贴板!
您可以使用 Network Observability 和 eBPF 来增强来自带有转换端点信息的 Kubernetes 服务网络流,了解端点服务流量。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
为
PacketTranslation
配置FlowCollector
自定义资源,例如:FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您可以通过列出
spec.agent.ebpf.features
规格列表中的PacketTranslation
参数来启动带有转换数据包信息的增强网络流。
过滤示例
当您刷新 Network Traffic 页时,您可以过滤以了解转换数据包的信息:
- 根据 Destination kind: Service 过滤网络流数据。
您可以查看 xlat 列,它区分显示转换的信息的位置,以及以下默认列:
- Xlat Zone ID
- Xlat Src Kubernetes 对象
- Xlat Dst Kubernetes 对象
您可以在 Manage 列中管理其他 xlat 列。
8.2.13. 使用用户定义的网络 复制链接链接已复制到粘贴板!
您可以在 Network Observability 资源中启用用户定义的网络(UDN)。以下示例显示了 FlowCollector
资源的配置。
前提条件
- 您已在 Red Hat OpenShift Networking 中配置了 UDN。如需更多信息,请参阅"使用 CLI 创建 UserDefinedNetwork"或"使用 Web 控制台创建 UserDefinedNetwork"。
流程
运行以下命令来编辑 Network Observability
FlowCollector
资源:oc edit flowcollector
$ oc edit flowcollector
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
FlowCollector
资源的ebpf
部分:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 建议查看所有流。
验证
刷新 Network Traffic 页,在 Traffic Flow 和 Topology 视图中查看更新的 UDN 信息:
-
在 Network Traffic > Traffic flows 中,您可以在
SrcK8S_NetworkName
和DstK8S_NetworkName
字段中查看 UDNs。 - 在 Topology 视图中,您可以将 Network 设置为 Scope 或 Group。
-
在 Network Traffic > Traffic flows 中,您可以在
8.2.14. 查看网络事件 复制链接链接已复制到粘贴板!
OVN-Kubernetes 网络事件跟踪只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以编辑 FlowCollector
来查看网络流量事件的信息,如以下资源丢弃或允许的网络流:
-
NetworkPolicy
-
AdminNetworkPolicy
-
BaselineNetworkPolicy
-
EgressFirewall
-
UserDefinedNetwork
隔离 - 多播 ACL
先决条件
-
您必须通过在名为
cluster
的FeatureGate
自定义资源(CR)中设置TechPreviewNoUpgrade
功能集来启用OVNObservability
。如需更多信息,请参阅"使用 CLI 启用功能集"和"使用 CLI 检查 OVN-Kubernetes 网络流量"。 -
您至少创建了以下网络 API 之一:
NetworkPolicy
、AdminNetworkPolicy
、BaselineNetworkPolicy
、UserDefinedNetwork
隔离、多播或EgressFirewall
。
流程
-
在 Web 控制台中,进入到 Operators
Installed Operators。 - 在 NetObserv Operator 的 Provided APIs 标题中,选择 Flow Collector。
- 选择 集群,然后选择 YAML 选项卡。
配置
FlowCollector
CR 以启用查看NetworkEvents
,例如:FlowCollector
配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 进入 Network Traffic 视图并选择 Traffic flows 表。
-
您应该会看到新的列 Network Events,您可以在其中查看您启用以下网络 API 的影响信息:
NetworkPolicy
、AdminNetworkPolicy
、BaselineNetworkPolicy
、UserDefinedNetwork
隔离、多播或出口防火墙。
您可以在此列中看到的事件类型示例如下:
网络事件输出示例
<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>
<Dropped_or_Allowed> by <network_event_and_event_name>, direction <Ingress_or_Egress>