ShadowOvO 你插入的masqurade规则的目的是什么,我理解不了,flannel已经设置了对应的规则。

    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 个月 后