×

您可以配置网络可观测性运算符以收集和丰富来自二级网络(例如 SR-IOV 和 OVN-Kubernetes)的网络流量数据。

先决条件

  • 访问具有附加网络接口(例如二级接口或 L2 网络)的 OpenShift Container Platform 集群。

配置对 SR-IOV 接口流量的监控

为了从具有单根 I/O 虚拟化 (SR-IOV) 设备的集群收集流量,必须将FlowCollectorspec.agent.ebpf.privileged字段设置为true。然后,eBPF 代理除了默认监控的主机网络命名空间外,还会监控其他网络命名空间。创建具有虚拟功能 (VF) 接口的 Pod 时,会创建一个新的网络命名空间。使用指定的SRIOVNetwork策略IPAM配置,VF 接口将从主机网络命名空间迁移到 Pod 网络命名空间。

先决条件
  • 访问具有 SR-IOV 设备的 OpenShift Container Platform 集群。

  • 必须使用接口列出的范围内的 IP 地址或来自其他插件的 IP 地址来设置SRIOVNetwork自定义资源 (CR) 的spec.ipam配置。

步骤
  1. 在 Web 控制台中,导航到**运算符**→**已安装的运算符**。

  2. 在**NetObserv 运算符**的**提供的 API**标题下,选择**流量收集器**。

  3. 选择**集群**,然后选择**YAML**选项卡。

  4. 配置FlowCollector自定义资源。示例配置如下:

    为 SR-IOV 监控配置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 监控。

为网络可观测性配置虚拟机 (VM) 二级网络接口

您可以通过识别来自连接到二级网络(例如通过 OVN-Kubernetes)的虚拟机的 eBPF 丰富的网络流来观察 OpenShift Virtualization 设置上的网络流量。来自连接到默认内部 Pod 网络的虚拟机的网络流量会由网络可观测性自动捕获。

步骤
  1. 运行以下命令获取有关虚拟机启动器 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 地址。
  2. 在 Web 控制台中,导航到**运算符**→**已安装的运算符**。

  3. 在**NetObserv 运算符**的**提供的 API**标题下,选择**流量收集器**。

  4. 选择**集群**,然后选择**YAML**选项卡。

  5. 根据您从其他网络调查中找到的信息配置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 地址重叠,则可以添加其他索引字段,例如IPInterface,以获得准确的增强信息。
    3 如果您的附加网络信息包含 MAC 地址,请将MAC添加到字段列表中。
    4 指定在k8s.v1.cni.cncf.io/network-status注释中找到的网络名称。通常为 <命名空间>/<网络附加定义名称>。
  6. 观察虚拟机流量

    1. 导航到**网络流量**页面。

    2. 使用在k8s.v1.cni.cncf.io/network-status注释中找到的虚拟机 IP,按**源**IP进行筛选。

    3. 查看已增强的**源**和**目标**字段,并识别虚拟机启动器 Pod 和虚拟机实例作为所有者。