8.7. 配置高性能多播

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

8.7.1. 配置高性能多播

OpenShift SDN 默认 Container Network Interface (CNI) 网络供应商支持默认网络上的 Pod 间的多播。目前,多播最适用于低带宽协调或服务发现。它不适用于高带宽的应用程序。对于流传输介质应用程序,如 IPTV 和多方视频会议,可以使用 Single Root I/O Virtualization(SR-IOV)硬件来提供接近原生的性能。

使用额外的 SR-IOV 接口进行多播时:

  • Pod 必须通过额外的 SR-IOV 接口发送或接收多播软件包。
  • 连接 SR-IOV 接口的物理网络决定了多播路由和拓扑结构,不受 OpenShift Container Platform 的控制。

8.7.2. 使用 SR-IOV 接口进行多播

以下步骤为多播创建一个 SR-IOV 接口示例。

先决条件

  • 安装 OpenShift 命令行界面 (CLI),通常称为 oc
  • 您必须作为 cluster-admin 角色用户登录集群。

流程

  1. 创建一个 SriovNetworkNodePolicy 自定义资源(CR):

    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 CR:

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: net-example
      namespace: openshift-sriov-network-operator
    spec:
      networkNamespace: default
      ipam: | 1
        {
          "type": "host-local", 2
          "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 2
    如果选择将 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
    只有在应用程序需要为 SR-IOV 接口分配多播 IP 地址时,才需要 NET_ADMIN 功能。否则,可以省略它。