apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
name: cluster
spec:
namespace: netobserv
deploymentModel: Direct
agent:
type: eBPF
ebpf:
privileged: true (1)
您可以配置网络可观测性运算符以收集和丰富来自二级网络(例如 SR-IOV 和 OVN-Kubernetes)的网络流量数据。
访问具有附加网络接口(例如二级接口或 L2 网络)的 OpenShift Container Platform 集群。
为了从具有单根 I/O 虚拟化 (SR-IOV) 设备的集群收集流量,必须将FlowCollector
的spec.agent.ebpf.privileged
字段设置为true
。然后,eBPF 代理除了默认监控的主机网络命名空间外,还会监控其他网络命名空间。创建具有虚拟功能 (VF) 接口的 Pod 时,会创建一个新的网络命名空间。使用指定的SRIOVNetwork
策略IPAM
配置,VF 接口将从主机网络命名空间迁移到 Pod 网络命名空间。
访问具有 SR-IOV 设备的 OpenShift Container Platform 集群。
必须使用接口列出的范围内的 IP 地址或来自其他插件的 IP 地址来设置SRIOVNetwork
自定义资源 (CR) 的spec.ipam
配置。
在 Web 控制台中,导航到**运算符**→**已安装的运算符**。
在**NetObserv 运算符**的**提供的 API**标题下,选择**流量收集器**。
选择**集群**,然后选择**YAML**选项卡。
配置FlowCollector
自定义资源。示例配置如下:
FlowCollector
apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
name: cluster
spec:
namespace: netobserv
deploymentModel: Direct
agent:
type: eBPF
ebpf:
privileged: true (1)
1 | 必须将spec.agent.ebpf.privileged 字段值设置为true 才能启用 SR-IOV 监控。 |
您可以通过识别来自连接到二级网络(例如通过 OVN-Kubernetes)的虚拟机的 eBPF 丰富的网络流来观察 OpenShift Virtualization 设置上的网络流量。来自连接到默认内部 Pod 网络的虚拟机的网络流量会由网络可观测性自动捕获。
运行以下命令获取有关虚拟机启动器 Pod 的信息。此信息在步骤 5 中使用
$ oc get pod virt-launcher-<vm_name>-<suffix> -n <namespace> -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.v1.cni.cncf.io/network-status: |-
[{
"name": "ovn-kubernetes",
"interface": "eth0",
"ips": [
"10.129.2.39"
],
"mac": "0a:58:0a:81:02:27",
"default": true,
"dns": {}
},
{
"name": "my-vms/l2-network", (1)
"interface": "podc0f69e19ba2", (2)
"ips": [ (3)
"10.10.10.15"
],
"mac": "02:fb:f8:00:00:12", (4)
"dns": {}
}]
name: virt-launcher-fedora-aqua-fowl-13-zr2x9
namespace: my-vms
spec:
# ...
status:
# ...
1 | 二级网络的名称。 |
2 | 二级网络的网络接口名称。 |
3 | 二级网络使用的 IP 列表。 |
4 | 二级网络使用的 MAC 地址。 |
在 Web 控制台中,导航到**运算符**→**已安装的运算符**。
在**NetObserv 运算符**的**提供的 API**标题下,选择**流量收集器**。
选择**集群**,然后选择**YAML**选项卡。
根据您从其他网络调查中找到的信息配置FlowCollector
apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
name: cluster
spec:
agent:
ebpf:
privileged: true (1)
processor:
advanced:
secondaryNetworks:
- index: (2)
- MAC (3)
name: my-vms/l2-network (4)
# ...
1 | 确保 eBPF 代理处于privileged 模式,以便收集辅助接口的流量。 |
2 | 定义用于索引虚拟机启动器 Pod 的字段。建议使用MAC 地址作为索引字段,以便为辅助接口获取网络流量增强信息。如果您的 Pod 之间存在 MAC 地址重叠,则可以添加其他索引字段,例如IP 和Interface ,以获得准确的增强信息。 |
3 | 如果您的附加网络信息包含 MAC 地址,请将MAC 添加到字段列表中。 |
4 | 指定在k8s.v1.cni.cncf.io/network-status 注释中找到的网络名称。通常为 <命名空间>/<网络附加定义名称>。 |
观察虚拟机流量
导航到**网络流量**页面。
使用在k8s.v1.cni.cncf.io/network-status
注释中找到的虚拟机 IP,按**源**IP进行筛选。
查看已增强的**源**和**目标**字段,并识别虚拟机启动器 Pod 和虚拟机实例作为所有者。