第 23 章 OVN-Kubernetes 默认 CNI 网络供应商
23.1. 关于 OVN-Kubernetes 默认 Container Network Interface (CNI) 网络供应商
OpenShift Container Platform 集群在 pod 和服务网络中使用虚拟网络。OVN-Kubernetes Container Network Interface (CNI) 插件是默认集群网络的一个网络供应商。OVN-Kubernetes 基于 Open Virtual Network(OVN),它提供了一个基于 overlay 的网络实现。使用 OVN-Kubernetes 网络供应商的集群还在每个节点上运行 Open vSwitch(OVS)。OVN 在每个节点上配置 OVS 来实现声明的网络配置。
OVN-Kubernetes 是单节点 OpenShift 部署的默认网络解决方案。
23.1.1. OVN-Kubernetes 特性
OVN-Kubernetes Container Network Interface (CNI) 集群网络供应商实现以下功能:
- 使用 OVN(开源虚拟网络)管理网络流量。OVN 是一个社区开发、与供应商无关的网络虚拟化解决方案。
- 实现 Kubernetes 网络策略支持,包括入口和出口规则。
- 使用 Geneve(通用网络虚拟化封装)协议而不是 VXLAN 在节点间创建覆盖网络。
23.1.2. 支持的默认 CNI 网络供应商功能列表
OpenShift Container Platform 为默认的 Container Network Interface (CNI) 网络供应商提供两个支持的选择:OpenShift SDN 和 OVN-Kubernetes。下表总结了这两个网络供应商当前支持的功能:
功能 | OVN-Kubernetes | OpenShift SDN |
---|---|---|
出口 IP | 支持 | 支持 |
Egress 防火墙 [1] | 支持 | 支持 |
出口路由器 | 支持 [2] | 支持 |
混合网络 | 支持 | 不支持 |
集群内通信的 IPsec 加密 | 支持 | 不支持 |
IPv6 | 支持 [3] [4] | 不支持 |
Kubernetes 网络策略 | 支持 | 支持 |
Kubernetes 网络策略日志 | 支持 | 不支持 |
硬件卸载 | 支持 | 不支持 |
多播 | 支持 | 支持 |
- 在 OpenShift SDN 中,出口防火墙也称为出口网络策略。这和网络策略出口不同。
- OVN-Kubernetes 的出口路由器仅支持重定向模式。
- IPv6 只在裸机集群中被支持。
- IPv6 单堆栈不支持 Kubernetes NMState。
23.1.3. OVN-Kubernetes 限制
OVN-Kubernetes Container Network Interface(CNI)集群网络供应商有以下限制:
-
sessionAffinityConfig.clientIP.timeoutSeconds
服务在 OpenShift OVN 环境中无效,但在 OpenShift SDN 环境中不起作用。这种不兼容可能会导致用户难以从 OpenShift SDN 迁移到 OVN。
对于为双栈网络配置的集群,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 系列都包含默认网关。