我在Google容器引擎上部署了一个容器,运行正常。现在,我想公开它。
此应用程序是一个侦听2个端口的服务。使用kubectl公开部署,我创建了2个负载均衡器,每个端口一个。
我制作了2个负载均衡器,因为kubectl expose命令似乎不允许多个端口。虽然我在kubectl上将其定义为 type = LoadBalancer ,但是一旦在GKE上创建了它们,它们就被定义为与2个目标池相关联的转发规则,这些规则池也是由kubectl创建的。 kubectl还自动为每个平衡器制定防火墙规则。
我制作的第一个应用程序会暴露应用程序。我能够与应用程序通信并获得响应。
第二个根本没有连接。我一直得到连接拒绝或连接超时。为了解决这个问题,我进一步剥离了我的防火墙规则,尽可能地允许解决这个问题。由于允许使用ICMP,因此默认情况下,ping此平衡器的ip会导致回复。
kubernetes是否只允许一个负载均衡器工作,即使可以配置多个负载均衡器?如果重要的话,工作平衡器的外部IP是35.xxx.xxx.xxx模式,平衡器的ip不工作是107.xxx.xxx.xxx。
作为一个附带问题,有没有办法使用kubectl expose --port暴露多个端口,而不定义范围,即我只需要2个端口?
最后,我尝试使用Google控制台,但我无法获得负载均衡器,或转发规则以使用kubernetes上的内容,就像在kubectl上执行此操作一样。
这是我使用的命令,在第二次使用时修改端口和服务名称:
kubectl expose deployment myapp --name=my-app-balancer --type=LoadBalancer --port 62697 --selector="app=my-app"
我的防火墙规则基本上设置为允许所有传入的TCP连接超过0.0.0.0/0。
修改 外部知识产权与它无关。我一直在删除&重新创建平衡器,直到我获得工作平衡器的IP为xxx.xxx.xxx.xxx,并且平衡器仍然正常工作。
我还试图删除工作平衡器并重新创建一个不起作用的平衡器,看看它是否是平衡器之间的冲突。第二个平衡器仍然没有工作,即使它是唯一一个正在运行的平衡器。
我目前正在调查我的应用的第二项服务的代码,尽管它与第一项服务实际上是相同的,这是一个简单的ServerSocket实现,可以侦听定义的端口。