×

Red Hat OpenShift Service on AWS 集群使用虚拟化网络作为 Pod 和服务网络。

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

OVN-Kubernetes 是 Red Hat OpenShift Service on AWS 和单节点 OpenShift 部署的默认网络解决方案。

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

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

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

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

OVN-Kubernetes 的用途

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

  • OVN 来管理网络流量流。

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

  • 通用网络虚拟化封装 (Geneve) 协议(而不是虚拟可扩展局域网 (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地址设置会话保持,请参见会话保持

会话保持的粘滞超时

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