我在AWS上的Kubernetes集群中托管了以下服务。
两者都很有效。我目前将它们都设置为type: LoadBalancer
,因此它们都具有为群集提供入口的Elastic Load Balancers。
我想只有一个ELB - 它们需要花钱,并且没有理由不在相同的外部IP上安装Minecraft服务器和HTTP(S)服务器。
我尝试创建没有选择器的服务,然后尝试手动创建引用该服务的Endpoints对象,但它似乎不起作用。 Here's the setup on a gist。当我在群集内部对分配的curl
尝试nodePort
时,它就会挂起。
有没有办法让多个服务有一个服务余额?
答案 0 :(得分:4)
您也可以简单地使用nginx作为您的Minecraft服务器的代理,并将来自入口端口25565的流量转发到Minecraft服务器。这样所有流量都通过一个服务
答案 1 :(得分:3)
版本1.1.0中添加的Ingress资源专门针对此用例而设计。它允许您将多个服务放在单个IP地址后面,根据HTTP路径路由到它们。查看the user guide on it了解更多详情,但请随时询问您是否对此有更多疑问!
编辑:对于非HTTP(S)服务,您必须找到一种方法来确保所有必需的端口由ELB进行负载平衡,然后由Kubernetes正确路由。在GCE上,您可以使用所需的端口手动创建负载均衡器,然后将负载均衡器的IP放在每个服务的externalIPs
字段中。我的记忆有点模糊,但我不相信它会因为数据包重写而与ELB一起工作。您可能希望将每个服务创建为NodePort
服务,然后配置ELB以将数据包从正确的外部端口转发到每个服务的节点端口。