我正在VM中运行一个单节点Kubernetes集群,以进行开发和测试。我使用Rancher Kubernetes引擎(RKE,Kubernetes版本1.18)进行了部署,并使用了MetalLB来启用LoadBalancer服务类型。 Traefik是2.2版,可通过官方Helm图表(https://github.com/containous/traefik-helm-chart)进行部署。我部署了一些虚拟容器来测试设置(https://hub.docker.com/r/errm/cheese)。
我可以通过节点IP正常访问Traefik仪表板(-> MetalLB似乎有效)。它为测试容器注册服务和路由。一切看起来都很好,但是当我尝试在浏览器中访问测试容器时,出现502 Bad Gateway错误。
一些探测表明, pod 的出站流量似乎存在问题。当我通过SSH进入节点时,我可以通过其服务或容器IP访问所有容器。从节点到Pod的DNS也可以正常工作。但是,如果我启动一个交互式busybox Pane ,则无法从那里到达任何其他 Pane 或主机。当我将wget
编码到任何其他容器(全部在默认 namespace 中)时,我只会得到wget: can't connect to remote host (10.42.0.7): No route to host.
。对于Internet上的服务器也是如此。
我尚未安装任何网络策略,并且我所知道的默认情况下未安装任何网络策略。
我也经历了这个:https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service
指南中的所有内容均正常运行,但pod似乎没有任何网络连接。
我的RKE配置是标准配置,除了我关闭了标准Nginx入口并启用了etcd静态加密。
有任何想法吗?
最佳答案
也许只是仔细检查一下您节点的ip转发是否已打开:sysctl net.ipv4.ip_forward
如果由于某种原因它不返回:net.ipv4.ip_forward = 1
然后可以使用以下命令进行设置:sudo sysctl -w net.ipv4.ip_forward=1
并使其永久:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf
加载关于docker - Kubernetes Pod上没有出站网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63891644/