8.8. 将虚拟机连接到 OVN-Kubernetes 二级网络
您可以将虚拟机(VM)连接到 OVN-Kubernetes 二级网络。OpenShift Virtualization 支持 OVN-Kubernetes 的 layer2
和 localnet
拓扑。
-
layer2
拓扑通过集群范围的逻辑交换机连接工作负载。OVN-Kubernetes Container Network Interface (CNI) 插件使用 Geneve (Generic Network Virtualization Encapsulation) 协议在节点间创建覆盖网络。您可以使用此覆盖网络在不同的节点上连接虚拟机,而无需配置任何其他物理网络基础架构。 -
localnet
拓扑将二级网络连接到 下的物理网络。这可让 east-west 集群流量并访问在集群外运行的服务,但它需要在集群节点上配置底层 Open vSwitch (OVS) 系统。
OVN-Kubernetes 二级网络与 多网络策略 API 兼容,它提供 MultiNetworkPolicy
自定义资源定义(CRD)来控制进出虚拟机的流量流。您可以使用 ipBlock
属性来定义特定 CIDR 块的网络策略入口和出口规则。
要配置 OVN-Kubernetes 二级网络并将虚拟机附加到该网络,请执行以下步骤:
通过创建网络附加定义(NAD)来配置 OVN-Kubernetes 二级网络。
注意对于
localnet
拓扑,您必须在创建 NAD 前创建一个NodeNetworkConfigurationPolicy
对象来配置 OVS 网桥。- 通过在虚拟机规格中添加网络详情,将虚拟机连接到 OVN-Kubernetes 二级网络。
8.8.1. 创建 OVN-Kubernetes NAD 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台或 CLI 创建 OVN-Kubernetes 网络附加定义(NAD)。
不支持在虚拟机的网络附加定义中指定 spec.config.ipam.subnet
属性来配置 IP 地址管理(IPAM)。
8.8.1.1. 使用 CLI 为第 2 层拓扑创建 NAD 复制链接链接已复制到粘贴板!
您可以创建一个网络附加定义(NAD),它描述了如何将 pod 附加到第 2 层覆盖网络。
先决条件
-
您可以使用具有
cluster-admin
权限的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
创建
NetworkAttachmentDefinition
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Container Network Interface (CNI)规格版本。所需的值为
0.3.1
。 - 2
- 网络的名称。此属性不是命名空间。例如,您可以有一个名为
l2-network
的网络,该网络从两个不同的命名空间中存在的两个不同的NetworkAttachmentDefinition
对象引用。此功能可用于连接不同命名空间中的虚拟机。 - 3
- CNI 插件的名称。所需的值为
ovn-k8s-cni-overlay
。 - 4
- 网络的拓扑配置。所需的值为
layer2
。 - 5
- 可选:最大传输单元 (MTU) 值。如果没有设置值,Cluster Network Operator (CNO)通过计算主网络接口中的 underlay MTU 的不同来设置默认的 MTU 值,如 pod 网络的 overlay MTU,如 Geneve (Generic Network Virtualization Encapsulation),以及任何启用的功能(如 IPsec)的字节容量。
- 6
NetworkAttachmentDefinition
对象的metadata
小节中的namespace
和name
字段的值。
注意前面的示例配置了一个集群范围的覆盖,但没有定义子网。这意味着实现网络的逻辑交换机仅提供第 2 层通信。您必须在创建虚拟机时配置 IP 地址,方法是设置静态 IP 地址,或在网络上为动态 IP 地址部署 DHCP 服务器。
运行以下命令来应用清单:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.8.1.2. 使用 CLI 为 localnet 拓扑创建 NAD 复制链接链接已复制到粘贴板!
您可以创建一个网络附加定义 (NAD),它描述了如何将 pod 附加到底层物理网络。
先决条件
-
您可以使用具有
cluster-admin
权限的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。 - 已安装 Kubernetes NMState Operator。
流程
创建
NodeNetworkConfigurationPolicy
对象,将 OVN-Kubernetes 二级网络映射到 Open vSwitch (OVS)网桥:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意OpenShift Virtualization 不支持 Linux 网桥绑定模式 0、5 和 6。如需更多信息,请参阅哪个绑定模式在与虚拟机客户机或容器连接的网桥一起使用时可以正常工作?
创建
NetworkAttachmentDefinition
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- CNI 规格版本。所需的值为
0.3.1
。 - 2
- 网络的名称。此属性必须与定义 OVS 网桥映射的
NodeNetworkConfigurationPolicy
对象的spec.desiredState.ovn.bridge-mappings.localnet
字段的值匹配。 - 3
- 要配置的 CNI 插件的名称。所需的值为
ovn-k8s-cni-overlay
。 - 4
- 网络的拓扑配置。所需的值为
localnet
。 - 5
- 可选:最大传输单元 (MTU) 值。如果没有设置值,Cluster Network Operator (CNO)通过计算主网络接口的 MTU 的不同、pod 网络的 overlay MTU 和字节容量来设置默认的 MTU 值,如 IPsec。
- 6
- 另外,对于更精细的网络管理,您可以为 NAD 配置虚拟 LAN (VLAN) ID。使用此 NAD 的虚拟机有一个接口,它只能与使用相同 VLAN ID 的设备通信(本例中为
200
)。 - 7
NetworkAttachmentDefinition
对象的metadata
小节中的namespace
和name
字段的值。
应用清单:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.8.1.3. 使用 Web 控制台为第 2 层拓扑创建 NAD 复制链接链接已复制到粘贴板!
您可以创建一个网络附加定义 (NAD) 来描述如何将 pod 附加到第 2 层覆盖网络。
先决条件
-
您可以使用具有
cluster-admin
权限的用户访问集群。
流程
-
在 web 控制台中进入 Networking
NetworkAttachmentDefinition。 - 点 Create Network Attachment Definition。网络附加定义必须与 pod 或虚拟机位于同一个命名空间中。
- 输入唯一 Name 和可选 Description。
- 从 Network Type 列表中选择 OVN Kubernetes L2 overlay 网络。
- 点 Create。
8.8.1.4. 使用 Web 控制台为 localnet 拓扑创建 NAD 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台创建网络附加定义(NAD)将工作负载连接到物理网络。
先决条件
-
您可以使用具有
cluster-admin
权限的用户访问集群。 -
使用
nmstate
将 localnet 配置为 OVS 网桥映射。
流程
- 在 web 控制台中进入到 Networking → NetworkAttachmentDefinition。
- 点 Create Network Attachment Definition。网络附加定义必须与 pod 或虚拟机位于同一个命名空间中。
- 输入唯一 Name 和可选 Description。
- 从 Network Type 列表中选择 OVN Kubernetes secondary localnet network。
- 在 Bridge mapping 字段中输入预先配置的 localnet 标识符的名称。
- 可选:您可以将 MTU 明确设置为指定的值。内核选择默认值。
- 可选:封装 VLAN 中的流量。默认值为 none。
- 点 Create。
8.8.2. 将虚拟机附加到 OVN-Kubernetes 二级网络 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform web 控制台或 CLI 将虚拟机(VM)附加到 OVN-Kubernetes 二级网络接口。
8.8.2.1. 使用 CLI 将虚拟机附加到 OVN-Kubernetes 二级网络 复制链接链接已复制到粘贴板!
您可以通过在虚拟机配置中包含网络详情,将虚拟机 (VM) 连接到 OVN-Kubernetes 二级网络。
先决条件
-
您可以使用具有
cluster-admin
权限的用户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
编辑
VirtualMachine
清单以添加 OVN-Kubernetes 二级网络接口详情,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用
VirtualMachine
清单:oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:如果编辑了正在运行的虚拟机,您必须重启它才能使更改生效。