k8s中net.ipv4.ip_forward=1的意义

IP forward

IP forward 是一种内核态设置,允许将一个接口的流量转发到另外一个接口,该配置是 Linux 内核将流量从容器路由到外部所必须的。

背景

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

为什么k8s中需要ip_forward

k8s中的三层扁平网络涉及到流量在不同网络设备之间的传递,比如:flannel的实现中,流量会在cni网桥,flannel.1设备,本机网卡设备之间传递流量。如果关闭,则流量无法在多个物理网络设备间传递

net.ipv4.ip_forward属性

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。

这个参数指定了Linux系统当前对路由转发功能的支持情况:
其值为0时:表示禁止进行IP转发;
其值为1时:表示IP转发功能已经打开。

临时设置

1、sysctl -w net.ipv4.ip_forward=1

2、echo 1 > /proc/sys/net/ipv4/ip_forward

持久化设置

修改 /etc/sysctl.conf 配置文件:

grep "net.ipv4.ip_forward" /etc/sysctl.conf
if [ $? -eq 0 ];then
    sed -i -r -e "s|net.ipv4.ip_forward.*|net.ipv4.ip_forward=0|g" /etc/sysctl.conf
else
    echo "net.ipv4.ip_forward=0" >> sysctl.conf    
fi
sysctl -p
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐