我使用Google Kubernetes Engine部署了Kubernetes集群 . 我的集群使用ingress-nginx入口控制器来处理入口 . 我发现由于某种原因,我的Kubernetes集群中的实例无法连接到为入口控制器服务公开的外部IP地址 . 也就是说,如果我为abc.mydomain.com创建了一些入口,我可以在任何其他计算机或实例上向此域发出HTTP请求,但是当我尝试从内部的实例向此域发出请求时Kubernetes群集连接尝试将超时 .

为了澄清,我在这些实例上使用curl对此进行了测试 . 我会跑

curl https://abc.mydomain.com

总是得到

curl: (7) Failed to connect to abc.mydomain.com port 443: Connection timed out in response.

abc.mydomain.com解析为的IP地址是GCE负载均衡器的IP地址,该地址在创建入口控制器时自动创建和配置 . 我还尝试使用telnet在端口443上 Build 与此IP地址的连接 . 同样,结果是相似的 . 从任何其他实例或计算机 Build 连接就好了,但如果我尝试在端口443上从我的Kubernetes集群中的实例 Build 到此IP地址的连接,它就会挂起 . 我想也许有防火墙问题,但我没有看到我的VPC中配置的任何防火墙规则会以这种方式阻止任何流量 . 这对我来说很重要的原因是因为我在这个Kubernetes集群中托管了一个docker存储库,它恰好是我在集群中为其他服务托管图像的docker存储库 . 当docker尝试从Kubernetes实例上的此存储库中提取图像时,由于上述连接问题,它会失败 . 我在这里错过了什么吗?我的实例都具有Internet访问权限,可以向其他外部IP地址发出请求,但在尝试 Build 与群集本身的外部IP地址的连接时失败 .