Datapath V2下最佳实践

更新时间:
复制为 MD 格式

本文介绍在使用Terway网络插件的集群中,启用Datapath V2后如何优化集群的网络配置,例如Conntrack参数配置、Identity资源管理等,以提升集群性能和稳定性。

优化Conntrack配置

ConntrackLinux内核中的连接跟踪模块,用于跟踪网络连接的状态。在Datapath V2模式下,容器网络的ConntrackeBPF程序提供。您可以参见优化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 会导致连接中断,因为新映射需要重新填充现有的服务条目。