zoukankan      html  css  js  c++  java
  • 使用flannel插件的情况下,开启Iptables

    背景

    kubernetes: 1.16.3
    CNI: flannel
    因为Node有公网和内网两个IP,使用防火墙对机器进行安全加固

    问题

    开启防火墙后,不同节点的Node之间无法通信

    # Generated by iptables-save v1.4.21 on Thu Jul  8 10:16:12 2021
    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [6:438]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -s 10.244.0.0/16 -m comment --comment "pod Subnet" -j ACCEPT
    -A INPUT -s 10.96.0.0/12 -m comment --comment "service Subnet" -j ACCEPT
    -A INPUT -s 10.241.0.0/16 -m comment --comment "lan IP" -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
    -A INPUT -p udp -m udp --sport 123 -j ACCEPT
    -A INPUT -p udp -m udp --dport 123 -j ACCEPT
    -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
    -A INPUT -p udp -m udp --sport 53 -j ACCEPT
    -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
    -A INPUT -p udp -m udp --dport 161 -j ACCEPT
    COMMIT
    # Completed on Thu Jul  8 10:16:12 2021
    

    node 节点内网全开

    解决思路

    1. 将上述配置写入到/etc/sysconfig/iptables中,并重启防火墙配置
    2. kube-proxy和flannel检查到自身的防火墙被清理后,会自动创建
    3. 此时在A节点上Ping B节点的Pod IP,发现网络不通
    4. 通过抓包发现,对端没有回复任何包
    5. 关闭Iptables服务,并清理自己创建的规则
    6. 此时检查是通的
    7. 开启防火墙,并全开flannel数据传输的UTP 8472端口,发现也是通的
      -A INPUT -p udp --dport 8472 -j ACCEPT
      
    8. 此时可以出结论,故障出现在公网网卡上,检查flannel日志,发现果然监听的是公网IP
      I0903 09:57:22.857993       1 main.go:532] Using interface with name XXX and address XX.XXX.X.X
      I0903 09:57:22.858084       1 main.go:549] Defaulting external address to interface address (XX.XXX.X.X)
      

    解决方法

    重新部署flannel,并指定使用的网卡

    args:
      - '--ip-masq'
      - '--kube-subnet-mgr'
      - '--iface=ens192'
    

    总结

    1. 在双网卡的情况下,flannel默认使用第一张网卡
    2. flannel会使用网卡对应的IP的8472来传输数据
    每天学习一点点,重在积累!
  • 相关阅读:
    Android 再次打开APP进入按Home键退出时的界面(thisTaskRoot)
    SQL server 安装成功到使用Sa SQL server验证登录等一系列问题
    Android JSON解析插件
    Android utils 工具类之MD5加密 MD5Utils
    Android 避免内存泄漏
    Android utils 之 日志工具类
    Android Studio 第一个Android项目
    Android Studio安装
    JDK 安装与环境配置配置——Android开发第一步
    U盘启动安装系统之旅----记录自己的第一次操作
  • 原文地址:https://www.cnblogs.com/GXLo/p/15224560.html
Copyright © 2011-2022 走看看