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
5.3.2.2. 使用 Web 控制台创建 Linux 网桥 NAD
您可以创建一个网络附加定义(NAD)来使用 OpenShift Container Platform web 控制台为 Pod 和虚拟机提供第 2 层网络。
Linux 网桥网络附加定义是将虚拟机连接至 VLAN 的最有效方法。
不支持在虚拟机的网络附加定义中配置 IP 地址管理(IPAM)。
流程
-
在 Web 控制台中,点 Networking
NetworkAttachmentDefinitions。 点 Create Network Attachment Definition。
注意网络附加定义必须与 pod 或虚拟机位于同一个命名空间中。
- 输入唯一 Name 和可选 Description。
- 从 Network Type 列表中选择 CNV Linux 网桥。
- 在 Bridge Name 字段输入网桥名称。
- 可选:如果资源配置了 VLAN ID,请在 VLAN Tag Number 字段中输入 ID 号。
- 可选: 选择 MAC Spoof Check 来启用 MAC spoof 过滤。此功能只允许单个 MAC 地址退出 pod,从而可以防止使用 MAC 欺骗进行的安全攻击。
- 点 Create。
5.3.3. 配置网络以进行实时迁移
配置了 Linux 网桥网络后,您可以为实时迁移配置专用网络。专用的网络可最小化实时迁移期间对租户工作负载的网络饱和影响。
5.3.3.1. 为实时迁移配置专用的二级网络
要为实时迁移配置专用的二级网络,您必须首先使用 CLI 创建桥接网络附加定义(NAD)。然后,您可以将 NetworkAttachmentDefinition
对象的名称添加到 HyperConverged
自定义资源(CR)。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您以具有
cluster-admin
角色的用户身份登录到集群。 - 每个节点至少有两个网络接口卡 (NIC)。
- 用于实时迁移的 NIC 连接到同一 VLAN。
流程
根据以下示例创建
NetworkAttachmentDefinition
清单:配置文件示例
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: my-secondary-network 1 namespace: openshift-cnv 2 spec: config: '{ "cniVersion": "0.3.1", "name": "migration-bridge", "type": "macvlan", "master": "eth1", 3 "mode": "bridge", "ipam": { "type": "whereabouts", 4 "range": "10.200.5.0/24" 5 } }'
运行以下命令,在默认编辑器中打开
HyperConverged
CR:oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
将
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
对象的名称。
-
保存更改并退出编辑器。
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 网络。
- 为网络创建了网络附加定义。
流程
- 在 OpenShift Container Platform web 控制台中进入到 Virtualization > Overview。
- 点 Settings 选项卡,然后点 Live migration。
- 从 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 可能会排空节点,并在某些情况下会重启节点。
它可能需要几分钟时间来应用配置更改。
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
您可以使用具有
cluster-admin
角色的用户访问集群。 - 已安装 SR-IOV Network Operator。
- 集群中有足够的可用节点,用于处理从排空节点中驱除的工作负载。
- 您还没有为 SR-IOV 网络设备配置选择任何 control plane 节点。
流程
创建一个
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
- 可选:指定一个
0
到99
之间的整数。较小的数值具有较高的优先权,优先级10
高于优先级99
。默认值为99
。 - 6
- 可选:为虚拟功能(VF)的最大传输单位 (MTU) 指定一个值。最大 MTU 值可能因不同的 NIC 型号而有所不同。
- 7
- 为 SR-IOV 物理网络设备指定要创建的虚拟功能 (VF) 的数量。对于 Intel 网络接口控制器(NIC),VF 的数量不能超过该设备支持的 VF 总数。对于 Mellanox NIC,VF 的数量不能超过
127
。 - 8
nicSelector
映射为 Operator 选择要配置的以太网设备。您不需要为所有参数指定值。建议您以足够的准确度来识别以太网适配器,以便尽量减小意外选择其他以太网设备的可能性。如果指定了rootDevices
,则必须同时为vendor
、deviceID
或pfNames
指定一个值。如果同时指定了pfNames
和rootDevices
,请确保它们指向同一个设备。- 9
- 可选:指定 SR-IOV 网络设备的厂商十六进制代码。允许的值只能是
8086
或15b3
。 - 10
- 可选:指定 SR-IOV 网络设备的设备十六进制代码。允许的值只能是
158b
、1015
、1017
。 - 11
- 可选:参数接受包括以太网设备的一个或多个物理功能 (PF) 的数组。
- 12
- 参数接受一个包括一个或多个 PCI 总线地址,用于以太网设备的物理功能的数组。使用以下格式提供地址:
0000:02:00.1
。 - 13
- OpenShift Virtualization 中的虚拟功能需要
vfio-pci
驱动程序类型。 - 14
- 可选:指定是否启用远程直接访问(RDMA)模式。对于 Mellanox 卡,请将
isRdma
设置为false
。默认值为false
。
注意如果将
RDMA
标记设定为true
,您可以继续使用启用了 RDMA 的 VF 作为普通网络设备。设备可在其中的一个模式中使用。-
可选:将 SR-IOV 功能的集群节点标记为
SriovNetworkNodePolicy.Spec.NodeSelector
(如果它们还没有标记)。有关标记节点的更多信息,请参阅"了解如何更新节点上的标签"。 创建
SriovNetworkNodePolicy
对象:$ oc create -f <name>-sriov-node-network.yaml
其中
<name>
指定这个配置的名称。在应用配置更新后,
sriov-network-operator
命名空间中的所有 Pod 都会变为Running
状态。要验证是否已配置了 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
角色的用户身份登录。 - 为网络创建了网络附加定义。
流程
-
进入到 Virtualization
Overview。 - 在 Settings 选项卡中,点 Cluster。
- 展开 General settings 和 SSH 配置。
- 将 SSH over LoadBalancer 服务 设置为 on。