kevendeng 就是做SNAT 源地址转换。我本地虚拟机从没有设置过是正常,但测试了两台云服务都需设置

    kevendeng 另一台云服务之前是能访问控制面板,但容器内无法访问外网,加上这个规则就好了。
    这个是进出都不行,加了规则也没用

    ShadowOvO 把这一条删掉再重新测试下是否联通吧,这个规则把flannel的masq逻辑打乱了。

      ShadowOvO
      你现在外网跟容器双向都不连通是吧,是只有端口不连通还是双向ping也不通?
      看看iptables的filter表中的forward链是否允许转发外网与pod的数据包
      iptables -nvL FORWARD
      看看endpoints是否正常注册了
      kubectl -n kubesphere-system get endpoints ks-console
      再看看kube-proxy跟flanneld的日志是否有报错

      当然,你最好也能在整个链路上每个接口:宿主机 pod上都抓包,看看数据包是在哪一步停止传输的

        kevendeng 通过在容器上,宿主机上,远端主机抓包发现。容器的数据包能到达宿主机,能到达远端主机,远端主机的数据包能回到宿主机,但宿主机上的数据包无法回到容器

          ShadowOvO 看看forward链的规则吧,正常情况下flannel会设置两条10.244.0.0的accept规则。

            ShadowOvO
            flannel设置的accept规则就是kubespheredev那两条,说明数据包不是在这被拦截的

              kevendeng
              ks-console 内部监听,没问题,数据包都进来了也处理返回了,但就宿主机那块儿一直没有回包没法响应浏览器。。。我吐了。加了MASQ怎么就不行呢:)

                ShadowOvO 从目前的信息来看我认为组件都工作正常,唯一可能是人为的错误配置或者别的组件,不过我没注意到的。
                期待你查到root cause并分享。

                  3 个月 后
                  5 个月 后

                  ShadowOvO

                  我也碰到了这样 问题,从pod无法ping公网,在cni0 上不能抓到ICMP包。
                  如果直接ping cni0的ip,可以抓到ICMP包。

                  `

                  jacarrichan@jcpc:~/k8s$ !714

                  kubectl exec -it traceroute – ping 10.240.0.1

                  PING 10.240.0.1 (10.240.0.1): 56 data bytes

                  64 bytes from 10.240.0.1: seq=0 ttl=64 time=0.080 ms

                  64 bytes from 10.240.0.1: seq=1 ttl=64 time=0.156 ms

                  64 bytes from 10.240.0.1: seq=2 ttl=64 time=0.155 ms

                  C

                  --- 10.240.0.1 ping statistics —

                  3 packets transmitted, 3 packets received, 0% packet loss

                  round-trip min/avg/max = 0.080/0.130/0.156 ms

                  jacarrichan@jcpc:~/k8s$ kubectl exec -it traceroute – ping 114.114.114.114

                  PING 114.114.114.114 (114.114.114.114): 56 data bytes

                  C

                  --- 114.114.114.114 ping statistics —

                  10 packets transmitted, 0 packets received, 100% packet loss

                  command terminated with exit code 1

                  `