【K8S运维知识汇总】第3天5:Flannel之SNAT规划优化

网友投稿 307 2022-09-07

【K8S运维知识汇总】第3天5:Flannel之SNAT规划优化

flannel之SNAT规则优化的目的是由于在K8S中的容器内,访问不同宿主机中的容器的资源的时候,日志文件会记录为宿主机的IP地址,而不是记录为容器本身自己的IP地址,建议在不同的宿主机上的容器互访的时候,在日志文件中查询到的IP地址均为容器的真实的IP地址。如下图所示,是为宿主机或进入宿主机的容器中进行curl访问另外node节点的容器,都会被记录成宿主机的IP地址,这样就会导致不同宿主机的容器互访,会经过一次SNAT转换,而实际上,不同宿主机容器之间的访问,应该会被记录为容器的实际IP地址而非宿主机的IP地址

解决两宿主机容器之间的透明访问,如不进行优化,容器之间的访问,日志记录为宿主机的IP地址。

宿主机访问172.7.22.2的nginx容器

2、172.7.22.2查看nginx访问日志

3、进入172.7.21.2的容器访问172.7.22.2的nginx容器,查看日志

4、再次查看172.7.22.2的nginx访问日志

5、解决问题:当容器172.7.21.2访问172.7.22.2的nginx容器时,展示的日志应为172.7.21.2 二、解决方法 1、安装iptables-services组件

[root@test-nodes1 ~]# yum -y install iptables-services[root@test-nodes1 ~]# systemctl start iptables[root@test-nodes1 ~]# systemctl enable iptables

2、把以下iptable记录的伪装转向删除

[root@test-nodes1 ~]# iptables-save |grep -i postrouting:POSTROUTING ACCEPT [68:4098]:KUBE-POSTROUTING - [0:0]-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING-A POSTROUTING -s 172.7.21.0/24 ! -o docker0 -j MASQUERADE #删除此条-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT"

3、删除该记录

[root@test-nodes1 ~]# iptables -t nat -D POSTROUTING -s 172.7.21.0/24 ! -o docker0 -j MASQUERADE

4、插入一条新的记录(排除对172.7.0.0/16网络访问的伪装)

[root@test-nodes1 ~]# iptables -t nat -I POSTROUTING -s 172.7.21.0/24 ! -d 172.7.0.0/16 ! -o docker0 -j MASQUERADE

5、查看是否生效

[root@test-nodes1 ~]# iptables-save |grep -i postrouting:POSTROUTING ACCEPT [13:814]:KUBE-POSTROUTING - [0:0]-A POSTROUTING -s 172.7.21.0/24 ! -d 172.7.0.0/16 ! -o docker0 -j MASQUERADE-A POSTROUTING -m comment --comment "kubernetes postrouting rules" -j KUBE-POSTROUTING-A KUBE-POSTROUTING -m comment --comment "kubernetes service traffic requiring SNAT"

6、删除iptables上所有reject拒绝规则

[root@test-nodes1 ~]# iptables-save | grep -i reject-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibited[root@test-nodes1 ~]# iptables -t filter -D INPUT -j REJECT --reject-with icmp-host-prohibited[root@test-nodes1 ~]# iptables -t filter -D FORWARD -j REJECT --reject-with icmp-host-prohibited[root@test-nodes1 ~]# iptables-save | grep -i reject

7、保存iptables规则

[root@test-nodes1 ~]# iptables-save > /etc/sysconfig/iptables

三、验证结果

1、通过容器172.7.21.2访问172.7.22.2

2、查看172.7.22.2的容器日志

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【K8S运维知识汇总】第3天3:flanneld安装部署详解
下一篇:营销头版:哈哈哈!我们的日常生活,居然被拍成魔性广告片了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~