第 24 章 OVN-Kubernetes 网络插件


24.1. 关于 OVN-Kubernetes 网络插件

OpenShift Container Platform 集群在 pod 和服务网络中使用虚拟网络。

Red Hat OpenShift Networking 的一部分,OVN-Kubernetes 网络插件是 OpenShift Container Platform 的默认网络供应商。OVN-Kubernetes 基于 Open Virtual Network(OVN),它提供了一个基于 overlay 的网络实现。使用 OVN-Kubernetes 插件的集群还在每个节点上运行 Open vSwitch (OVS)。OVN 在每个节点上配置 OVS 来实现声明的网络配置。

注意

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

OVN-Kubernetes (来自 OVS 项目)使用许多相同的结构,如开放流规则,以确定数据包通过网络传输的方式。如需更多信息,请参阅 Open Virtual Network 网站

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

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

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

24.1.1. OVN-Kubernetes 目的

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

  • 使用 OVN(开源虚拟网络)管理网络流量。OVN 是一个社区开发、与供应商无关的网络虚拟化解决方案。
  • 实现 Kubernetes 网络策略支持,包括入口和出口规则。
  • 使用 Geneve(通用网络虚拟化封装)协议而不是 VXLAN 在节点间创建覆盖网络。

OVN-Kubernetes 网络插件比 OpenShift SDN 提供以下优点。

  • 在支持的平台上完全支持 IPv6 单堆栈和 IPv4/IPv6 双栈网络
  • 支持 Linux 和 Microsoft Windows 工作负载中的混合集群
  • 可选的、集群内通信的 IPsec 加密
  • 将网络数据处理从主机 CPU 卸载到兼容的网卡和数据处理单元 (DPU)

24.1.2. 支持的网络插件功能列表

Red Hat OpenShift Networking 为网络插件(OpenShift SDN 和 OVN-Kubernetes)提供了两个选项,用于网络插件。下表总结了这两个网络插件的当前功能支持:

表 24.1. 默认 CNI 网络插件功能比较
功能OpenShift SDNOVN-Kubernetes

出口 IP

支持

支持

出口防火墙

支持

支持 [1]

出口路由器

支持

支持 [2]

混合网络

不支持

支持

集群内通信的 IPsec 加密

不支持

支持

IPv4 单栈

支持

支持

IPv6 单栈

不支持

支持 [3]

IPv4/IPv6 双栈

不支持

支持的 [4]

IPv6/IPv4 双栈

不支持

支持 [5]

Kubernetes 网络策略

支持

支持

Kubernetes 网络策略日志

不支持

支持

硬件卸载

不支持

支持

多播

支持

支持

  1. 在 OpenShift SDN 中,出口防火墙也称为出口网络策略。这和网络策略出口不同。
  2. OVN-Kubernetes 的出口路由器仅支持重定向模式。
  3. 裸机平台上的 IPv6 单堆栈网络。
  4. 裸机、VMware vSphere 上的 IPv4/IPv6 双栈网络(仅限安装程序置备的基础架构安装)、IBM Power®、IBM Z® 和 RHOSP 平台。
  5. 裸机、VMware vSphere (仅限安装程序置备的基础架构安装)和 IBM Power® 平台上的 IPv6/IPv4 双栈网络。

24.1.3. OVN-Kubernetes IPv6 和双栈限制

OVN-Kubernetes 网络插件有以下限制:

  • 对于为双栈网络配置的集群,IPv4 和 IPv6 流量都必须使用与默认网关相同的网络接口。如果不满足此要求,则 ovnkube-node 守护进程集中的主机上的容器集进入 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 守护进程集中的主机上的容器集进入 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 系列都包含默认网关。

24.1.4. 会话关联性

会话关联性是适用于 Kubernetes Service 对象的功能。如果要确保每次连接到 <service_VIP>:<Port> 时,您可以使用 会话关联性,流量始终被加载到同一后端。如需更多信息,包括如何根据客户端的 IP 地址设置会话关联性,请参阅会话关联性

会话关联性的粘性超时

OpenShift Container Platform 的 OVN-Kubernetes 网络插件根据最后一个数据包计算来自客户端的会话的粘性超时。例如,如果您运行 curl 命令 10 次,则粘性会话计时器从第十个数据包开始,而不是第一个数据包。因此,如果客户端不断联系该服务,则会话永远不会超时。当服务没有收到 timeoutSeconds 参数所设定的时间的数据包时,超时开始。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.