ShadowOvO 更改标题为「K8s pod 容器无法ping通外网, kubesphere devOps 无法使用

ShadowOvO 看起来是向100.100.2.138(136)解析gitee.com超时,这两个应该是阿里云的dns,可以咨询下阿里云ecs服务

    修改dns配置后还需要重启coredns才生效

    另外可以贴下你的coredns配置吗,kubectl get cm -n kube-system coredns -oyaml

      ShadowOvO 我记得你说过在POD内ping不通114对吧?如果是无法连接外网,那问题的根源不在coredns,而是整个网络连接的问题。
      从你POD内的ip route看上去,POD网络设置是没问题的,试试在节点上执行iptables-save看看是否设置了正确的拦截规则与转发规则。

      可以在宿主机上抓包看pod访问外网的流量,然后看看flannel的配置/run/flannel/subnet.env是否和flannel.1的地址匹配

      建议咨询阿里云服务排查相关网络配置是否正确,如安全组、防火墙等

        ShadowOvO IP-MASQ应该是flannel自己做的,你的flannel是怎么安装的呢,为什么会有这个问题。

          ShadowOvO 你是先在Linux上用kk安装了K8S与KS,CNI用的Calico,然后卸载了Calico,自己手动apply flannel的yaml安装的flannel?

            ShadowOvO 你的flannel设置的集群ip地段是10.244.0.0/16
            但是你这个节点分到的ip段是10.1.0.0/24,不在集群ip段里
            iptables规则里,flannel已经设置好了该有的masq规则,但是因为没有覆盖到节点ip段,导致masq失败,也就是pod不能连通外网
            即使是手动加了masq规则,你目前的配置也只能支持一个节点的k8s运行,如果添加节点,网络还是会出错
            至于为什么节点分配到的ip不在集群ip配置的范围内,值得研究

              kevendeng 是的,不知道是部署的原因还是和云服务厂商有关,本地没出现过这个问题

              kevendeng 还发现一个问题,不知您有遇到过没。就是 插入MASQUERADE规则到第一行,并且填写的是 IP/Mask 。但查看后发现变成了 HostName 形式,而 ip 形式的没有生效,也没有数据。这是什么问题

                ShadowOvO
                你是执行的iptables -L吧,它默认会对ip地址进行反向DNS查询,显示hostname,你用iptables -L -n看就行了。
                至于这个kubespheredev的hostname,应该是你自己配置的吧
                iptables规则的行为也与这个无关,如果行为非预期,那应该是规则没写对

                  kevendeng -n 显示的是预期的值。而且公网IP还无法访问kubesphere面板,是为什么,宿主机上能抓到数据包