我在Google Container Engine上部署了一个容器,它运行良好。现在,我想公开它。
这个应用程序是一个侦听2个端口的服务。使用kubectl公开部署,我创建了2个负载均衡器,每个端口一个。
我制作了两个负载平衡器,因为kubectl expose命令似乎不允许使用多个端口。虽然我在kubectl上将其定义为type=LoadBalancer,但一旦在GKE上创建了它们,它们就被定义为与kubectl创建的2个目标池关联的转发规则。kubectl还自动为每个平衡器制定防火墙规则。
我制作的第一个公开了应用程序。我能够与应用程序进行通信并得到响应。
第二个根本没有连接。我不断收到连接被拒绝或连接超时的消息。为了解决这个问题,我进一步简化了防火墙规则,尽可能允许解决这个问题。由于允许ICMP,默认情况下,ping此平衡器的ip会导致回复。
kubernetes是否只允许一个负载平衡器工作,即使可以配置多个负载平衡器?如果有任何问题,则工作平衡器的外部ip为模式35。xxx。xxx。xxx和不工作的平衡器的ip为107。xxx。xxx。xxx。
作为一个附带的问题,是否有一种方法可以使用kubectl expose--port公开多个端口,而不需要定义范围,即我只需要2个端口?
最后,我尝试使用Google控制台,但我无法让负载平衡器或转发规则与html" target="_blank">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与此无关。我一直在删除
我还尝试删除工作的平衡器,并重新创建一个不工作的平衡器,以查看平衡器之间是否存在冲突。第二个平衡器仍然无法工作,即使它是唯一运行的平衡器。
我目前正在研究我的应用程序的第二个服务的代码,尽管它实际上与第一个服务相同,这是一个简单的ServerSocket实现,在定义的端口上侦听。
经过更彻底的调查(在运行的pod中打开控制台、安装tcpump、iptables等),我发现服务(即负载均衡器)实际上是可访问的。在这种情况下发生的事情是,尽管流量到达了容器的虚拟网络接口(eth0),但数据并没有路由到监听服务,即使这些是接口的ip别名(eth0:1、eth0:2)。
让它工作的最后一步是创建所需的路线
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport <listener-ip> -j DNAT --to-destination <listener-ip>
请注意,还有其他方法可以实现这一点,但这是我选择的方法。我希望Docker/Kubernetes文档提到这一点。
名称:示例-服务 命名空间:默认 标签:run=load-balancer-example 注释: 选择器:run=load-balancer-example 类型:nodeport IP:10.108.214.162 端口:9090/tcp 目标端口:9090/tcp 节点端口:31105/tcp endpoint:192.168.1.23:9090,192.168.1.24:9090 会话关联
我假设上述证书的路径是主机上的路径,python脚本将从中获取文件,然后进行YAML构建? 测试呼叫3: 测试呼叫4:
我正在尝试将我的Docked React应用程序部署到Kubernetes。我相信我已经正确对接了,但我无法访问暴露的吊舱。 我没有在Docker或Kubernetes工作的经验,所以任何帮助都将不胜感激。 我的反应应用程序只是从Tomcat提供的静态文件(从npm运行构建)。 我的Dockerfile在下面。总之,我把我的应用程序放在Tomcat文件夹中,并公开端口8080。 我构建并将Dock
我正在尝试在minikube(Windows-10)上部署简单的spring boot REST服务。下面是我的配置 Docker文件 docker image运行良好,我能够运行该应用程序。 部署 服务 我无法使用< code > service-IP:node port/Uri < br > http://127 . 0 . 0 . 1:30008/hello访问restendpoint ht
和库伯内特斯一起,我试图部署詹金斯的形象 所以,这是我对我的员工的责任: 还有我在这部分的数据 这里是我的yaml文件来部署它 我的持续音量 我坚持不懈的努力 还有我的部署 在执行命令后,一切看起来都很好: 在我的工人身上,这是我的容器 所以我在我的容器上启动一个shell,我可以在上看到我的数据: 我试图在我的中写入数据,但权限被拒绝 在我的中也是一样,我不能写数据 因此,我在部署yaml中尝试
工作节点1上的Curl对群集IP来说是最合适的(这是运行pod的节点) Curl在其他工作节点上也失败: