本文介绍在使用Terway网络插件的集群中,启用Datapath V2后如何优化集群的网络配置,例如Conntrack参数配置、Identity资源管理等,以提升集群性能和稳定性。
优化Conntrack配置
Conntrack是Linux内核中的连接跟踪模块,用于跟踪网络连接的状态。在Datapath V2模式下,容器网络的Conntrack由eBPF程序提供。您可以参见优化Terway模式下conntrack配置来调整Conntrack参数,例如调整Conntrack表大小、调整TCP链接记录超时时间,以适配高并发服务等场景下的网络需求。
限制Identity数量
在 Datapath V2 功能中,NetworkPolicy通过 eBPF 技术实现。与传统的基于 Netfilter 的方式不同,在 eBPF 的实现中,系统会为每个 Pod 分配一种 Identity作为身份ID标识,用于精准管理网络权限。
Identity由 Pod 标签和Namespace标签组合而成,具有相同标签组合的 Pod 会被分配同一个 Identity,以便统一管控它们的网络访问规则。
NetworkPolicy的规则会通过 IP-Identity 映射来判断流量是否符合策略。简单来说,系统会使用 Pod 的 IP 地址与其 Identity,判断是否允许该流量通过。
若您没有开启NetworkPolicy功能,Identity无任何作用,Terway会自动限制Identity数量。
若您启用NetworkPolicy功能,您应当避免一组相同身份的Pod,具备不同的标签。使用不同标签会产生大量Identity资源,可能会造成集群管控压力升高,IP分配速度下降。
通过配置标签过滤,可以避免无效的标签被记录到Identity中。
配置标签过滤
此操作包含重要内容,请谨慎操作。
调整标签过滤规则会触发Identity新建,短时间内Identity数量会增加,API Server资源开销也会有不同程度的增加。
配置错误的标签过滤规则会导致NetworkPolicy策略失效。
不可过滤所有标签:需为每组 Pod 保留至少一个标签(Namespace 或 Pod 标签),否则系统将无法识别该 Pod 的身份。
被过滤的标签无法用于策略规则:如果某个标签被添加到过滤列表中,该标签将无法在 NetworkPolicy 规则中被引用。请确保仅过滤无效标签。
关于配置标签过滤的语法,请参见Cilium。
关于在Terway中如何配置,请参见自定义Terway配置参数中cilium_args相关内容。
服务负载均衡 Map 大小调整
Cilium 使用名为 cilium_lb{4,6}_services_v2 的 LB Service Maps来保存 ClusterIP 和 NodePort 类型服务的负载均衡条目。这些映射通过 --bpf-lb-map-max 标志进行配置,默认设置为 64k。如果此映射已满,Cilium 可能无法更新服务端点,这可能会影响到服务 IP 的连通性或创建新服务的能力。
服务 LB 映射所需的大小取决于多个因素。
每个 ClusterIP/NodePort 服务创建的条目数量等于该服务选择的后端 Pod 数量乘以相应 Service spec 中的端口、协议条目数量。
利用这一点,我们可以粗略估算所需的映射大小为:
注意这种估算假设每个服务选择的 Pod 数量和端口/协议条目数大致呈正态分布。如果您的用例存在较大的异常值(例如,某个服务选择了非常大量的 Pod 后端),则可能需要进行更详细的估算。
调整bpf-lb-map-max参数并重启 Cilium 会导致连接中断,因为新映射需要重新填充现有的服务条目。