zoukankan      html  css  js  c++  java
  • 记一次flannel调试

    今天发现k8s集群中不同Node上的pod不能互相ping通。调试了很长时间,发现是flannel的问题,记之。

    问题一:对flannel backend的选择

    flannel支持多种backend,包括host-gw, vxlan, udp。其中前两个比较常用,在我的集群中一开始随便选择了host-gw作为

    backend。这种backend不会在节点上创建形如flannel.1的网卡,它对宿主机的网络有要求,它要求宿主机处于同一个二层网络里。

    关于二层网络的定义,网上有很多,不再赘述。而vxlan则没有这个要求,它会在宿主机创建一个虚拟网卡,该网卡负责封装跨节点的

    容器通信。

    问题二:docker本身的问题

    在将backend从host-gw切换至vxlan后,三个node中的两个node可以互相通信了,而第三个node接受不到另两个node上容器中的ping请求。

    调试过程如下:

    sudo tcpdump -i flannel.1 观察flannel网卡是不是收到报文,结果为已收到

    sudo tcpdump -i docker0 观察docker0网卡是不是收到报文,结果为未收到

    说明flannel网卡向docker0网卡提交报文时出了问题。

    经过一番google,在https://github.com/coreos/flannel/issues/609中找到了解决办法,在节点上执行:

    sudo iptables -P FORWARD ACCEPT

  • 相关阅读:
    Mac安装zookeeper
    征途
    vue-配置文件
    数组去重
    判断身份证
    判断邮箱
    判断手机号是否正确
    JS 时间格式转换
    打印 print-js
    自"愚"自乐的云服务器
  • 原文地址:https://www.cnblogs.com/elnino/p/11120716.html
Copyright © 2011-2022 走看看