zoukankan      html  css  js  c++  java
  • Kubernets二进制安装(14)之flannel之SNAT规则优化

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

    image-20200510231719764

    分别查询mfyxw30和mfyxw40主机是否安装iptables-services,如果未安装请先安装

    安装iptables-service方法:yum -y install iptables-service

    image-20200511153046814

    分别查看下mfyxw30和mfyxw40主机的iptables的POSTROUTING规则

    image-20200511153350694

    -A POSTROUTING -s 10.10.30.0/24 ! -o docker0 -j MASQUERADE 这条规则中可以看出来,源地址为10.10.30.0/24的网段的IP地址,不从docker0网口出去的都需要做SNAT转发。这样就会导致在开头所看到的。在一台宿主机的容器要访问另外一台宿主机的容器,查询到的访问日志是被SNAT的。而在实际生产环境中,我们需要的是容器间互访,查看日志文件得到的IP地址应该是容器本身的IP地址而非宿主机的IP地址

    1.先把原来的规则删除

    分别在mfyxw30和mfyxw40主机上,删除-A POSTROUTING -s 10.10.30.0/24 ! -o docker0 -j MASQUERADE此规则,添加一条新的规则如下所示:

    image-20200511160125549

    2.添加一条新的规则

    再次登录到mfyxw30主机上的容器访问mfyxw40主机上的容器,并让mfyxw40主机上的容器一直监视着logs。会发现已经容器间互访的IP变成了容器的实际的IP地址

    image-20200511160313448

    在mfyxw30宿主机上执行curl 10.10.40.2来访问mfyxw40宿主机上的容器的IP地址

    image-20200511160706938

    在mfyxw40主机上的容器上可以看到日志输出如下

    image-20200511160831629

    3.保存iptables

    分别在mfyxw30和mfyxw40主机上执行iptables-save > /etc/sysconfig/iptables命令来保存所修改的

    image-20200511160612930

  • 相关阅读:
    一个经典的多线程同步问题
    原子操作 Interlocked系列函数
    C中的volatile用法
    android值类型转换
    Button事件的三种实现方法
    【Android UI】顶部or底部菜单的循环滑动效果一
    【Android UI】侧滑栏的使用(HorizontalScrollView控件的使用)
    Android问题解决
    【Android UI】自定义带按钮的标题栏
    Android 设置 横屏 竖屏
  • 原文地址:https://www.cnblogs.com/Heroge/p/12869793.html
Copyright © 2011-2022 走看看