×

您可以在单根I/O虚拟化(SR-IOV)硬件网络上使用组播。

在执行以下文档中的任何任务之前,请确保您已安装SR-IOV网络操作员

高性能组播

OVN-Kubernetes网络插件支持默认网络上Pod之间的组播。这最适合用于低带宽协调或服务发现,而不适合高带宽应用程序。对于流媒体应用程序(例如互联网协议电视(IPTV)和多点视频会议),您可以利用单根I/O虚拟化(SR-IOV)硬件来提供接近本机的性能。

使用附加的SR-IOV接口进行组播时

  • 必须通过附加的SR-IOV接口发送或接收组播数据包。

  • 连接SR-IOV接口的物理网络决定组播路由和拓扑,这不受OpenShift Container Platform控制。

配置用于组播的SR-IOV接口

以下步骤创建用于组播的示例SR-IOV接口。

先决条件
  • 安装OpenShift CLI (oc)。

  • 您必须使用具有cluster-admin角色的用户登录集群。

步骤
  1. 创建一个SriovNetworkNodePolicy对象

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: policy-example
      namespace: openshift-sriov-network-operator
    spec:
      resourceName: example
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      numVfs: 4
      nicSelector:
        vendor: "8086"
        pfNames: ['ens803f0']
        rootDevices: ['0000:86:00.0']
  2. 创建一个SriovNetwork对象

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: net-example
      namespace: openshift-sriov-network-operator
    spec:
      networkNamespace: default
      ipam: | (1)
        {
          "type": "host-local", (1)
          "subnet": "10.56.217.0/24",
          "rangeStart": "10.56.217.171",
          "rangeEnd": "10.56.217.181",
          "routes": [
            {"dst": "224.0.0.0/5"},
            {"dst": "232.0.0.0/5"}
          ],
          "gateway": "10.56.217.1"
        }
      resourceName: example
    1 如果您选择将DHCP配置为IPAM,请确保通过您的DHCP服务器预配以下默认路由:224.0.0.0/5232.0.0.0/5。这是为了覆盖默认网络提供商设置的静态组播路由。
  3. 创建一个具有组播应用程序的Pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: testpmd
      namespace: default
      annotations:
        k8s.v1.cni.cncf.io/networks: nic1
    spec:
      containers:
      - name: example
        image: rhel7:latest
        securityContext:
          capabilities:
            add: ["NET_ADMIN"] (1)
        command: [ "sleep", "infinity"]
    1 只有当您的应用程序需要将组播IP地址分配给SR-IOV接口时,才需要NET_ADMIN功能。否则,可以省略。