5.3. 安装后的网络配置


默认情况下,OpenShift Virtualization 安装了一个内部 pod 网络。

安装 OpenShift Virtualization 后,您可以安装网络 Operator 并配置额外网络。

5.3.1. 安装网络 Operator

您必须安装 Kubernetes NMState Operator 来为实时迁移或外部访问虚拟机(VM)配置 Linux 网桥网络。有关安装说明,请参阅使用 Web 控制台安装 Kubernetes NMState Operator

您可以安装 SR-IOV Operator 来管理 SR-IOV 网络设备和网络附加。有关安装说明,请参阅安装 SR-IOV Network Operator

您可以添加 MetalLB Operator 来管理集群中的 MetalLB 实例的生命周期。有关安装说明,请参阅使用 Web 控制台从 OperatorHub 安装 MetalLB Operator

5.3.2. 配置 Linux 网桥网络

安装 Kubernetes NMState Operator 后,您可以为实时迁移或外部访问虚拟机(VM)配置 Linux 网桥网络。

5.3.2.1. 创建 Linux 网桥 NNCP

您可以为 Linux 网桥网络创建一个 NodeNetworkConfigurationPolicy (NNCP) 清单。

先决条件

  • 已安装 Kubernetes NMState Operator。

流程

  • 创建 NodeNetworkConfigurationPolicy 清单。本例包含示例值,您必须替换为您自己的信息。

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: br1-eth1-policy 1
    spec:
      desiredState:
        interfaces:
          - name: br1 2
            description: Linux bridge with eth1 as a port 3
            type: linux-bridge 4
            state: up 5
            ipv4:
              enabled: false 6
            bridge:
              options:
                stp:
                  enabled: false 7
              port:
                - name: eth1 8
    1
    策略的名称。
    2
    接口的名称。
    3
    可选:接口人类可读的接口描述。
    4
    接口的类型。这个示例会创建一个桥接。
    5
    创建后接口的请求状态。
    6
    在这个示例中禁用 IPv4。
    7
    在这个示例中禁用 STP。
    8
    网桥附加到的节点 NIC。

5.3.2.2. 使用 Web 控制台创建 Linux 网桥 NAD

您可以创建一个网络附加定义(NAD)来使用 OpenShift Container Platform web 控制台为 Pod 和虚拟机提供第 2 层网络。

Linux 网桥网络附加定义是将虚拟机连接至 VLAN 的最有效方法。

警告

不支持在虚拟机的网络附加定义中配置 IP 地址管理(IPAM)。

流程

  1. 在 Web 控制台中,点 Networking NetworkAttachmentDefinitions
  2. Create Network Attachment Definition

    注意

    网络附加定义必须与 pod 或虚拟机位于同一个命名空间中。

  3. 输入唯一 Name 和可选 Description
  4. Network Type 列表中选择 CNV Linux 网桥
  5. Bridge Name 字段输入网桥名称。
  6. 可选:如果资源配置了 VLAN ID,请在 VLAN Tag Number 字段中输入 ID 号。
  7. 可选: 选择 MAC Spoof Check 来启用 MAC spoof 过滤。此功能只允许单个 MAC 地址退出 pod,从而可以防止使用 MAC 欺骗进行的安全攻击。
  8. Create

5.3.3. 配置网络以进行实时迁移

配置了 Linux 网桥网络后,您可以为实时迁移配置专用网络。专用的网络可最小化实时迁移期间对租户工作负载的网络饱和影响。

5.3.3.1. 为实时迁移配置专用的二级网络

要为实时迁移配置专用的二级网络,您必须首先使用 CLI 创建桥接网络附加定义(NAD)。然后,您可以将 NetworkAttachmentDefinition 对象的名称添加到 HyperConverged 自定义资源(CR)。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 角色的用户身份登录到集群。
  • 每个节点至少有两个网络接口卡 (NIC)。
  • 用于实时迁移的 NIC 连接到同一 VLAN。

流程

  1. 根据以下示例创建 NetworkAttachmentDefinition 清单:

    配置文件示例

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: my-secondary-network 1
      namespace: openshift-cnv
    spec:
      config: '{
        "cniVersion": "0.3.1",
        "name": "migration-bridge",
        "type": "macvlan",
        "master": "eth1", 2
        "mode": "bridge",
        "ipam": {
          "type": "whereabouts", 3
          "range": "10.200.5.0/24" 4
        }
      }'

    1
    指定 NetworkAttachmentDefinition 对象的名称。
    2
    指定要用于实时迁移的 NIC 名称。
    3
    指定为 NAD 提供网络的 CNI 插件名称。
    4
    为二级网络指定一个 IP 地址范围。这个范围不得与主网络的 IP 地址重叠。
  2. 运行以下命令,在默认编辑器中打开 HyperConverged CR:

    oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  3. NetworkAttachmentDefinition 对象的名称添加到 HyperConverged CR 的 spec.liveMigrationConfig 小节中:

    HyperConverged 清单示例

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
    spec:
      liveMigrationConfig:
        completionTimeoutPerGiB: 800
        network: <network> 1
        parallelMigrationsPerCluster: 5
        parallelOutboundMigrationsPerNode: 2
        progressTimeout: 150
    # ...

    1
    指定要用于实时迁移的 Multus NetworkAttachmentDefinition 对象的名称。
  4. 保存更改并退出编辑器。virt-handler Pod 会重启并连接到二级网络。

验证

  • 当运行虚拟机的节点置于维护模式时,虚拟机会自动迁移到集群中的另一个节点。您可以通过检查虚拟机实例(VMI)元数据中的目标 IP 地址,验证迁移是否在二级网络中发生,而不是默认 pod 网络。

    $ oc get vmi <vmi_name> -o jsonpath='{.status.migrationState.targetNodeAddress}'

5.3.3.2. 使用 Web 控制台选择专用网络

您可以使用 OpenShift Container Platform Web 控制台为实时迁移选择一个专用网络。

先决条件

  • 为实时迁移配置了 Multus 网络。

流程

  1. 在 OpenShift Container Platform web 控制台中进入到 Virtualization > Overview
  2. Settings 选项卡,然后点 Live migration
  3. Live migration network 列表中选择网络。

5.3.4. 配置 SR-IOV 网络

安装 SR-IOV Operator 后,您可以配置 SR-IOV 网络。

5.3.4.1. 配置 SR-IOV 网络设备

SR-IOV Network Operator 把 SriovNetworkNodePolicy.sriovnetwork.openshift.io CRD 添加到 OpenShift Container Platform。您可以通过创建一个 SriovNetworkNodePolicy 自定义资源 (CR) 来配置 SR-IOV 网络设备。

注意

在应用由 SriovNetworkNodePolicy 对象中指定的配置时,SR-IOV Operator 可能会排空节点,并在某些情况下会重启节点。仅在以下情况下重启:

  • 使用 Mellanox NIC (mlx5 驱动程序) 时,每次当在一个物理功能(PF)中的虚拟功能 (VF) 数量增加时,节点都会重启。
  • 使用 Intel NIC 时,只有在内核参数不包含 intel_iommu=oniommu=pt 时,才会重启。

它可能需要几分钟时间来应用配置更改。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已安装 SR-IOV Network Operator。
  • 集群中有足够的可用节点,用于处理从排空节点中驱除的工作负载。
  • 您还没有为 SR-IOV 网络设备配置选择任何 control plane 节点。

流程

  1. 创建一个 SriovNetworkNodePolicy 对象,然后在 <name>-sriov-node-network.yaml 文件中保存 YAML。使用配置的实际名称替换 <name>

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: <name> 1
      namespace: openshift-sriov-network-operator 2
    spec:
      resourceName: <sriov_resource_name> 3
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true" 4
      priority: <priority> 5
      mtu: <mtu> 6
      numVfs: <num> 7
      nicSelector: 8
        vendor: "<vendor_code>" 9
        deviceID: "<device_id>" 10
        pfNames: ["<pf_name>", ...] 11
        rootDevices: ["<pci_bus_id>", "..."] 12
      deviceType: vfio-pci 13
      isRdma: false 14
    1
    为 CR 对象指定一个名称。
    2
    指定 SR-IOV Operator 安装到的命名空间。
    3
    指定 SR-IOV 设备插件的资源名称。您可以为一个资源名称创建多个 SriovNetworkNodePolicy 对象。
    4
    指定节点选择器来选择要配置哪些节点。只有所选节点上的 SR-IOV 网络设备才会被配置。SR-IOV Container Network Interface(CNI)插件和设备插件仅在所选节点上部署。
    5
    可选:指定一个 099 之间的整数。较小的数值具有较高的优先权,优先级 10 高于优先级 99。默认值为 99
    6
    可选:为虚拟功能(VF)的最大传输单位 (MTU) 指定一个值。最大 MTU 值可能因不同的 NIC 型号而有所不同。
    7
    为 SR-IOV 物理网络设备指定要创建的虚拟功能 (VF) 的数量。对于 Intel 网络接口控制器(NIC),VF 的数量不能超过该设备支持的 VF 总数。对于 Mellanox NIC,VF 的数量不能超过 127
    8
    nicSelector 映射为 Operator 选择要配置的以太网设备。您不需要为所有参数指定值。建议您以足够的准确度来识别以太网适配器,以便尽量减小意外选择其他以太网设备的可能性。如果指定了rootDevices,则必须同时为 vendordeviceIDpfNames 指定一个值。如果同时指定了 pfNamesrootDevices,请确保它们指向同一个设备。
    9
    可选:指定 SR-IOV 网络设备的厂商十六进制代码。允许的值只能是 808615b3
    10
    可选:指定 SR-IOV 网络设备的设备十六进制代码。允许的值只能是 158b10151017
    11
    可选:参数接受包括以太网设备的一个或多个物理功能 (PF) 的数组。
    12
    参数接受一个包括一个或多个 PCI 总线地址,用于以太网设备的物理功能的数组。使用以下格式提供地址: 0000:02:00.1
    13
    OpenShift Virtualization 中的虚拟功能需要 vfio-pci 驱动程序类型。
    14
    可选:指定是否启用远程直接访问(RDMA)模式。对于 Mellanox 卡,请将 isRdma 设置为 false。默认值为 false
    注意

    如果将 RDMA 标记设定为 true,您可以继续使用启用了 RDMA 的 VF 作为普通网络设备。设备可在其中的一个模式中使用。

  2. 可选:将 SR-IOV 功能的集群节点标记为 SriovNetworkNodePolicy.Spec.NodeSelector (如果它们还没有标记)。有关标记节点的更多信息,请参阅"了解如何更新节点上的标签"。
  3. 创建 SriovNetworkNodePolicy 对象:

    $ oc create -f <name>-sriov-node-network.yaml

    其中 <name> 指定这个配置的名称。

    在应用配置更新后,sriov-network-operator 命名空间中的所有 Pod 都会变为 Running 状态。

  4. 要验证是否已配置了 SR-IOV 网络设备,请输入以下命令。将 <node_name> 替换为带有您刚才配置的 SR-IOV 网络设备的节点名称。

    $ oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath='{.status.syncStatus}'

5.3.5. 使用 Web 控制台启用负载均衡器服务创建

您可以使用 OpenShift Container Platform web 控制台为虚拟机(VM)创建负载均衡器服务。

先决条件

  • 已为集群配置负载均衡器。
  • 以具有 cluster-admin 角色的用户身份登录。

流程

  1. 进入到 Virtualization Overview
  2. Settings 选项卡中,点 Cluster
  3. 展开 General settingsSSH 配置
  4. SSH over LoadBalancer 服务 设置为 on。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.