×

OpenShift Dedicated 集群使用虚拟化网络作为 Pod 和服务网络。

OVN-Kubernetes 网络插件是 Red Hat OpenShift Networking 的一部分,它是 OpenShift Dedicated 的默认网络提供程序。OVN-Kubernetes 基于 Open Virtual Network (OVN),并提供基于覆盖网络的网络实现。使用 OVN-Kubernetes 插件的集群还在每个节点上运行 Open vSwitch (OVS)。OVN 配置每个节点上的 OVS 以实现声明的网络配置。

OVN-Kubernetes 是 OpenShift Dedicated 和单节点 OpenShift 部署的默认网络解决方案。

OVN-Kubernetes 源自 OVS 项目,它使用许多相同的构造(例如 OpenFlow 规则)来确定数据包如何在网络中传输。更多信息,请参见Open Virtual Network 网站

OVN-Kubernetes 是一系列 OVS 守护进程,它们将虚拟网络配置转换为OpenFlow规则。OpenFlow是一种与网络交换机和路由器通信的协议,它提供了一种远程控制网络设备上网络流量流动的途径,以便网络管理员可以配置、管理和监控网络流量的流动。

OVN-Kubernetes 提供了OpenFlow不具备的更多高级功能。OVN 支持分布式虚拟路由、分布式逻辑交换机、访问控制、动态主机配置协议 (DHCP) 和 DNS。OVN 在等同于 OpenFlow 的逻辑流中实现分布式虚拟路由。例如,如果您有一个 Pod 向网络上的 DHCP 服务器发送 DHCP 请求,则请求中的逻辑流规则有助于 OVN-Kubernetes 处理数据包,以便服务器可以使用网关、DNS 服务器、IP 地址和其他信息进行响应。

OVN-Kubernetes 在每个节点上运行一个守护进程。数据库和在每个节点上运行的 OVN 控制器都有 DaemonSet。OVN 控制器对节点上的 Open vSwitch 守护进程进行编程,以支持网络提供程序功能:出站 IP、防火墙、路由器、混合网络、IPSEC 加密、IPv6、网络策略、网络策略日志、硬件卸载和组播。

OVN-Kubernetes 的用途

OVN-Kubernetes 网络插件是一个开源的、功能齐全的 Kubernetes CNI 插件,它使用 Open Virtual Network (OVN) 来管理网络流量流。OVN 是一个社区开发的、与厂商无关的网络虚拟化解决方案。OVN-Kubernetes 网络插件使用以下技术:

  • OVN 来管理网络流量流。

  • Kubernetes 网络策略支持和日志,包括入口和出口规则。

  • 使用 Generic Network Virtualization Encapsulation (Geneve) 协议(而不是 Virtual Extensible LAN (VXLAN))在节点之间创建覆盖网络。

OVN-Kubernetes 网络插件支持以下功能:

  • 可以同时运行 Linux 和 Microsoft Windows 工作负载的混合集群。此环境称为混合网络

  • 将网络数据处理从主机中央处理单元 (CPU) 卸载到兼容的网卡和数据处理单元 (DPU)。这称为硬件卸载

  • 在裸机、VMware vSphere、IBM Power®、IBM Z® 和 RHOSP 平台上进行 IPv4 主双栈网络。

  • 在裸机平台上进行 IPv6 单栈网络。

  • 在裸机、VMware vSphere 或 RHOSP 平台上运行的集群的 IPv6 主双栈网络。

  • 出站防火墙设备和出站 IP 地址。

  • 以重定向模式运行的出站路由器设备。

  • 集群内通信的 IPsec 加密。

OVN-Kubernetes IPv6 和双栈限制

OVN-Kubernetes 网络插件存在以下限制

  • 对于配置为双栈网络的集群,IPv4 和 IPv6 流量必须使用与默认网关相同的网络接口。如果不满足此要求,则主机上ovnkube-node守护进程集中的 Pod 将进入CrashLoopBackOff状态。如果使用诸如oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml之类的命令显示 Pod,则status字段将包含多个关于默认网关的消息,如下所示:

    I1006 16:09:50.985852   60651 helper_linux.go:73] Found default gateway interface br-ex 192.168.127.1
    I1006 16:09:50.985923   60651 helper_linux.go:73] Found default gateway interface ens4 fe80::5054:ff:febe:bcd4
    F1006 16:09:50.985939   60651 ovnkube.go:130] multiple gateway interfaces detected: br-ex ens4

    唯一的解决方法是重新配置主机网络,以便两个 IP 族都使用相同的网络接口作为默认网关。

  • 对于配置为双栈网络的集群,IPv4 和 IPv6 路由表都必须包含默认网关。如果不满足此要求,则主机上ovnkube-node守护进程集中的 Pod 将进入CrashLoopBackOff状态。如果使用诸如oc get pod -n openshift-ovn-kubernetes -l app=ovnkube-node -o yaml之类的命令显示 Pod,则status字段将包含多个关于默认网关的消息,如下所示:

    I0512 19:07:17.589083  108432 helper_linux.go:74] Found default gateway interface br-ex 192.168.123.1
    F0512 19:07:17.589141  108432 ovnkube.go:133] failed to get default gateway interface

    唯一的解决方法是重新配置主机网络,以便两个 IP 族都包含默认网关。

会话保持

会话保持是适用于 Kubernetes Service 对象的功能。如果您希望确保每次连接到`:`时,流量始终负载均衡到相同的后端,则可以使用会话保持。有关更多信息,包括如何基于客户端 IP 地址设置会话保持,请参见会话保持

会话保持的粘性超时

OpenShift Dedicated 的 OVN-Kubernetes 网络插件根据最后一个数据包计算客户端会话的粘性超时。例如,如果您运行curl命令 10 次,则粘性会话计时器从第十个数据包开始,而不是从第一个数据包开始。因此,如果客户端持续联系服务,则会话永远不会超时。当服务在timeoutSeconds参数设置的时间内未收到数据包时,超时开始。