kube-proxy conntracker设置

1. conntracker是什么

conntracker跟踪并且记录连接状态。Linux为每一个经过网络堆栈的数据包,生成一个新的连接记录项 (Connection entry)。此后,所有属于此连接的数据包都被唯一地分配给这个连接,并标识连接的状态。连接跟踪是防火墙模块的状态检测的基础,同时也是地址转换中实 现SNAT和DNAT的前提。
那么Netfilter又是如何生成连接记录项的呢?每一个数据,都有“来源”与“目的”主机,发起连接的主机称为“来源”,响应“来源”的请求的主机即 为目的,所谓生成记录项,就是对每一个这样的连接的产生、传输及终止进行跟踪记录。由所有记录项产生的表,即称为连接跟踪表。
由于本文主要是介绍kube-proxy是怎么设置conntracker参数的,关于conntracker这里推荐看以下3篇文章:

  1. iptables 的 conntrack 连接跟踪模块
  2. Linux中kernel 的nf_conntrack参数调整详解
  3. iptables的nf_conntrack相关参数引起两个问题

2. kube-proxy的conntracker参数设置

在使用k8s集群做压测时,发现很多连接关闭,查看/var/log/messages发现有很多的nf_conntrack: table full, dropping packet。查看了/proc/sys/net/netfilter/nf_conntrack_max,发现里面的值被更改了,查看/var/log/messages发现了kube-proxy的重启操作。经过排除,最后将问题锁定在kube-proxy上,然后直接查找源码看它是怎么更改的。
首先查看源码中关于conntracker的参数设置
options
具体的设置代码
conntracker
从代码中看到,首先是调用getConntrackMax函数获取max的值,然后设置max,getConntrackMax函数如下
getConntrackMax
如果我们在kube-proxy的启动参数中没有设置–conntrack-max参数,则对比–conntrack-min和–conntrack-max-per-core的值与cpu核数的大小取其大者返回max值。最后调用SetMax设置conntrack-max的值
SetMax
继续跟踪SetSysctl函数会得到设置的完整路径为/proc/sys/net/netfilter/nf_conntrack_max。–conntrack-tcp-timeout-established与–conntrack-tcp-timeout-close-wait参数的设置同理,最后对应的文件路径分别为/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established和/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close_wait。

3. 总结

kube-proxy对conntracker的系统设置体现在上述代码中,这解释了我们初始配置的conntracker参数被kube-proxy给修改了,如果要保持conntracker的参数不变,主要是nf_conntrack_max、nf_conntrack_tcp_timeout_established、nf_conntrack_tcp_timeout_close_wait,这3个参数可以在kube-proxy的启动参数中和我们想要设置的参数一致。这里有必要提醒下nf_conntrack_max的设置,在源码中,关于conntrack-max参数是这样提示的“This feature will be removed in a later release.”,所以为了保守点,我们可以不设置这个参数,改为设置–conntrack-min或–conntrack-max-per-core,可以通过两种方式设置max的值
1. 设置–conntrack-min为我们期望的conntrack_max的值(推荐);
2. 设置–conntrack-max-per-core为我们期望的conntrack_max的值除以cpu核数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值