默认情况下,OVN-Kubernetes 充当 OpenShift Container Platform 集群的容器网络接口 (CNI)。当 OVN-Kubernetes 作为集群的默认 CNI 时,OpenShift Container Platform 管理员或用户可以利用用户定义网络 (UDN)或网络附加定义 (NAD)来创建一个或多个默认网络,处理集群的所有普通网络流量。用户定义网络和网络附加定义都可以作为以下网络类型:
主网络:充当 Pod 的主网络。默认情况下,所有流量都通过主网络,除非配置 Pod 路由以通过其他网络发送流量。
次要网络:充当 Pod 的附加非默认网络。次要网络提供专用于特定流量类型或用途的单独接口。只有明确配置为使用次要网络的 Pod 流量才会通过其接口路由。
但是,在集群安装期间,OpenShift Container Platform 管理员可以使用 Multus CNI 插件配置替代的默认次要 Pod 网络。使用 Multus,多个 CNI 插件(例如 ipvlan、macvlan 或网络附加定义)可以一起用作 Pod 的次要网络。
只有当 OVN-Kubernetes 用作 CNI 时,用户定义网络才可用。它们不支持与其他 CNI 一起使用。 |
您可以根据可用的 CNI 插件定义附加网络,并将这些网络中的一个或多个附加到您的 Pod。根据您的需求,您可以为集群定义多个附加网络。这在您配置提供网络功能(例如交换或路由)的 Pod 时为您提供了灵活性。
有关支持的 CNI 插件的完整列表,请参见“OpenShift Container Platform 中的附加网络”。
有关用户定义网络的信息,请参见关于用户定义网络 (UDN)。
有关网络附加定义的信息,请参见使用网络附加定义创建主网络。
在需要网络隔离的情况下,您可以使用附加网络,包括数据平面和控制平面分离。隔离网络流量对于以下性能和安全原因非常有用:
性能
流量管理:您可以在两个不同的平面上发送流量,以管理每个平面上的流量。
安全
网络隔离:您可以将敏感流量发送到专门用于安全考虑的网络平面,并且可以隔离租户或客户之间不能共享的私有数据。
集群中的所有 Pod 仍然使用集群范围的默认网络来维护集群内的连接。每个 Pod 都有一个连接到集群范围 Pod 网络的eth0
接口。您可以使用oc exec -it <pod_name> -- ip a
命令查看 Pod 的接口。如果您添加使用 Multus CNI 的附加网络接口,则其名称为net1
、net2
、…、netN
。
要将附加网络接口附加到 Pod,您必须创建定义如何附加接口的配置。您可以使用UserDefinedNetwork
自定义资源 (CR) 或NetworkAttachmentDefinition
CR 指定每个接口。这些 CR 中的 CNI 配置定义了如何创建该接口。
有关创建UserDefinedNetwork
CR 的更多信息,请参阅关于用户定义的网络。
有关创建 NetworkAttachmentDefinition CR 的更多信息,请参阅使用 NetworkAttachmentDefinition 创建主网络。
OpenShift Container Platform 提供以下 CNI 插件,用于在您的集群中创建附加网络
bridge:配置基于桥接的附加网络 以允许同一主机上的 Pod 彼此以及主机通信。
host-device:配置基于主机设备的附加网络 以允许 Pod 访问主机系统上的物理以太网网络设备。
ipvlan:配置基于 ipvlan 的附加网络 以允许主机上的 Pod 与其他主机以及这些主机上的 Pod 通信,类似于基于 macvlan 的附加网络。与基于 macvlan 的附加网络不同,每个 Pod 与父物理网络接口共享相同的 MAC 地址。
vlan:配置基于 VLAN 的附加网络 以允许基于 VLAN 的网络隔离和 Pod 的连接。
macvlan:配置基于 macvlan 的附加网络 以允许主机上的 Pod 使用物理网络接口与其他主机以及这些主机上的 Pod 通信。连接到基于 macvlan 的附加网络的每个 Pod 都将获得唯一的 MAC 地址。
TAP:配置基于 TAP 的附加网络 以在容器命名空间内创建 tap 设备。TAP 设备使用户空间程序能够发送和接收网络数据包。
SR-IOV:配置基于 SR-IOV 的附加网络 以允许 Pod 连接到主机系统上支持 SR-IOV 的硬件上的虚拟功能 (VF) 接口。