10.3. 优化网络
OpenShift SDN 使用 OpenvSwitch、虚拟可扩展 LAN(VXLAN)隧道、OpenFlow 规则和 iptables。可以使用巨型帧、多队列和 ethtool 设置调优此网络。
OVN-Kubernetes 使用通用网络虚拟化封装(Geneve)而不是 VXLAN 作为隧道协议。可以使用网络接口控制器 (NIC) 卸载来调优此网络。
运行 OpenShift Container Platform 的云、虚拟和裸机环境可在进行最少调优配置的情况下获得高的 NIC 功能百分比。使用带有 Geneve 隧道的 OVN-Kubernetes 可以有效地处理高吞吐量的流量并扩展(例如,使用 100 Gbps NIC),并进行扩展(例如,添加更多 NIC),而无需特殊配置。
在最大效率至关重要的某些高性能场景中,目标性能调优可帮助优化 CPU 使用量、减少开销并确保您完全使用 NIC 的功能。
对于最大吞吐量和 CPU 效率至关重要的环境,您可以使用以下策略进一步优化性能:
-
使用
iPerf3
和k8s-netperf
等工具验证网络性能。这些工具允许您跨 pod 和节点接口对每秒吞吐量、延迟和数据包每秒(PPS)进行基准测试。 - 评估 OVN-Kubernetes 用户定义的网络(UDN)路由技术,如边框网关协议(BGP)。
- 使用 Geneve-offload 功能的网络适配器。Geneve-offload 将数据包校验和相关的 CPU 开销从系统 CPU 移动到网络适配器的专用硬件中。这会释放 Pod 和应用程序使用的 CPU 周期,并允许用户利用其网络基础架构的全部带宽。
10.3.1. 为您的网络优化 MTU 复制链接链接已复制到粘贴板!
有两个重要的最大传输单元 (MTU):网络接口控制器 (NIC) MTU 和集群网络 MTU。
NIC MTU 在 OpenShift Container Platform 安装时配置,您也可以将集群的 MTU 更改为安装后任务。如需更多信息,请参阅"删除集群网络 MTU"。
对于使用 OVN-Kubernetes 插件的集群,MTU 必须小于 100
字节,以获得网络 NIC 的最大支持值。如果您要优化吞吐量,请选择最大可能的值,如 8900
。如果您要优化最小延迟,请选择一个较低值。
如果您的集群使用 OVN-Kubernetes 插件,并且网络使用 NIC 来通过网络发送和接收未碎片的巨型巨型帧数据包,则必须将 9000
字节指定为 NIC 的 MTU 值,以便 pod 不会失败。
OpenShift SDN 网络插件覆盖 MTU 必须至少小于 NIC MTU 50 字节。此帐户用于 SDN overlay 标头。因此,在普通以太网网络中,应该将其设置为 1450
。在巨型帧以太网网络中,这应设置为 8950
。这些值应该由 Cluster Network Operator 根据 NIC 配置的 MTU 自动设置。因此,集群管理员通常不会更新这些值。Amazon Web Services (AWS) 和裸机环境支持巨型帧以太网网络。此设置可以帮助吞吐量,特别是传输控制协议 (TCP)。
从 OpenShift Container Platform 4.14 开始,OpenShift SDN CNI 已被弃用。自 OpenShift Container Platform 4.15 起,网络插件不是新安装的选项。在以后的发行版本中,计划删除 OpenShift SDN 网络插件,并不再被支持。红帽将在删除前对这个功能提供程序错误修正和支持,但不会再改进这个功能。作为 OpenShift SDN CNI 的替代选择,您可以使用 OVN Kubernetes CNI。如需更多信息,请参阅 OpenShift SDN CNI 删除。
对于 OVN 和 Geneve,MTU 必须至少小于 NIC MTU 100 字节。
这个 50 字节覆盖标头与 OpenShift SDN 网络插件相关。其他 SDN 解决方案可能需要该值更大或更少。
10.3.2. 安装大型集群的实践建议 复制链接链接已复制到粘贴板!
在安装大型集群或将现有的集群扩展到较大规模时,请在安装集群在 install-config.yaml
文件中相应地设置集群网络 cidr
:
带有大量节点数的集群的网络配置的 install-config.yaml
文件示例
如果集群的节点数超过 500 个,则无法使用默认的集群网络 cidr
10.128.0.0/14
。cidr
必须设置为 10.128.0.0/12
或 10.128.0.0/10
,以达到超过 500 个节点的更大的节点数。
10.3.3. IPsec 的影响 复制链接链接已复制到粘贴板!
因为加密和解密节点主机使用 CPU 电源,所以启用加密时,无论使用的 IP 安全系统是什么,性能都会影响节点上的吞吐量和 CPU 使用量。
IPsec 在到达 NIC 前,会在 IP 有效负载级别加密流量,以保护用于 NIC 卸载的字段。这意味着,在启用 IPSec 时,一些 NIC 加速功能可能无法使用,并可能导致吞吐量降低并增加 CPU 用量。