×

安装网络操作符

您必须安装Kubernetes NMState操作符才能为实时迁移或对虚拟机 (VM) 的外部访问配置Linux桥接网络。有关安装说明,请参见使用Web控制台安装Kubernetes NMState操作符

您可以安装SR-IOV操作符来管理SR-IOV网络设备和网络附件。有关安装说明,请参见安装SR-IOV网络操作符

您可以添加关于MetalLB和MetalLB操作符来管理集群上MetalLB实例的生命周期。有关安装说明,请参见使用Web控制台从OperatorHub安装MetalLB操作符

配置Linux桥接网络

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

创建Linux桥接NNCP

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

先决条件
  • 您已安装Kubernetes NMState操作符。

步骤
  • 创建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 连接桥接的节点网卡。

使用Web控制台创建Linux桥接NAD

您可以使用OpenShift Container Platform Web控制台创建网络附件定义 (NAD),以向Pod和虚拟机提供第2层网络。

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

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

步骤
  1. 在Web控制台中,单击**网络** → **NetworkAttachmentDefinitions**。

  2. 点击创建网络附件定义

    网络附件定义必须与 Pod 或虚拟机位于相同的命名空间。

  3. 输入唯一的名称和可选的描述

  4. 网络类型列表中选择CNV Linux bridge

  5. 桥接名称字段中输入桥接的名称。

  6. 可选:如果资源已配置 VLAN ID,请在VLAN 标签编号字段中输入 ID 号。

  7. 可选:选择MAC欺骗检查以启用 MAC 欺骗过滤。此功能通过仅允许单个 MAC 地址离开 Pod 来提供针对 MAC 欺骗攻击的安全性。

  8. 点击创建

配置用于实时迁移的网络

配置 Linux bridge 网络后,您可以配置一个专用于实时迁移的网络。专用网络可最大限度地减少实时迁移期间网络饱和对租户工作负载的影响。

配置用于实时迁移的专用辅助网络

要配置用于实时迁移的专用辅助网络,您必须首先使用 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 将重新启动并连接到辅助网络。

验证
  • 当运行虚拟机的节点进入维护模式时,VM 会自动迁移到集群中的另一个节点。您可以通过检查虚拟机实例 (VMI) 元数据中的目标 IP 地址来验证迁移是否通过辅助网络而不是默认 Pod 网络进行。

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

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

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

先决条件
  • 您已为实时迁移配置了 Multus 网络。

  • 您已为网络创建了网络附件定义。

步骤
  1. 在 OpenShift Container Platform Web 控制台中导航到虚拟化 > 概述

  2. 点击设置选项卡,然后点击实时迁移

  3. 实时迁移网络列表中选择网络。

配置 SR-IOV 网络

安装 SR-IOV 运算符后,您可以配置 SR-IOV 网络。

配置 SR-IOV 网络设备

SR-IOV 网络运算符将SriovNetworkNodePolicy.sriovnetwork.openshift.io自定义资源定义添加到 OpenShift Container Platform。您可以通过创建 SriovNetworkNodePolicy 自定义资源 (CR) 来配置 SR-IOV 网络设备。

应用SriovNetworkNodePolicy对象中指定的配置时,SR-IOV 运算符可能会使节点停转,在某些情况下,还会重新引导节点。仅在以下情况下才会重新引导:

  • 对于 Mellanox NIC(mlx5驱动程序),每次物理功能 (PF) 上的虚拟功能 (VF) 数量增加时,都会重新引导节点。

  • 对于 Intel NIC,只有在内核参数不包含intel_iommu=oniommu=pt时,才会重新引导。

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

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

  • 您可以以具有cluster-admin角色的用户身份访问集群。

  • 您已安装 SR-IOV 网络运算符。

  • 您的集群中有足够的可用节点来处理从停转节点中驱逐的工作负载。

  • 您没有为 SR-IOV 网络设备配置选择任何控制平面节点。

步骤
  1. 创建一个SriovNetworkNodePolicy对象,然后将 YAML 保存到<name>-sriov-node-network.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 运算符的命名空间。
    3 指定 SR-IOV 设备插件的资源名称。您可以为资源名称创建多个SriovNetworkNodePolicy对象。
    4 指定节点选择器以选择要配置的节点。只有所选节点上的 SR-IOV 网络设备才会被配置。SR-IOV 容器网络接口 (CNI) 插件和设备插件仅部署在所选节点上。
    5 可选:指定099之间的整数值。较小的数字具有较高的优先级,因此优先级为10高于优先级为99。默认值为99
    6 可选:为虚拟功能的最大传输单元 (MTU) 指定一个值。最大 MTU 值对于不同的 NIC 型号可能有所不同。
    7 指定要为 SR-IOV 物理网络设备创建的虚拟功能 (VF) 的数量。对于 Intel 网络接口控制器 (NIC),VF 数量不能大于设备支持的总 VF 数量。对于 Mellanox NIC,VF 数量不能大于127
    8 nicSelector映射选择运算符要配置的以太网设备。您不需要为所有参数指定值。建议以足够的精度识别以太网适配器,以最大限度地减少无意中选择以太网设备的可能性。如果您指定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

    如果将 isRDMA 标志设置为 true,则可以继续将启用 RDMA 的 VF 用作普通网络设备。一个设备可以在任一模式下使用。

  2. 可选:如果 SR-IOV 可用集群节点尚未标记,请使用 SriovNetworkNodePolicy.Spec.NodeSelector 为其添加标签。有关标记节点的更多信息,请参见“了解如何在节点上更新标签”。

  3. 创建 SriovNetworkNodePolicy 对象

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

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

    应用配置更新后,sriov-network-operator 命名空间中的所有 Pod 将转换到 运行中 状态。

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

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

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

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

先决条件
  • 您已为集群配置了负载均衡器。

  • 您已登录为具有 cluster-admin 角色的用户。

  • 您已为网络创建了网络附件定义。

步骤
  1. 导航到**虚拟化** → **概述**。

  2. 在**设置**选项卡上,单击**集群**。

  3. 展开**常规设置**和**SSH 配置**。

  4. 将**通过负载均衡器服务的 SSH** 设置为开启。