我想通过单个负载均衡器公开多个服务。每项服务都指向一个pod。
到目前为止,我试图:
kubectl expose <podName> --port=7000
在Azure门户中,手动设置负载平衡规则或Inbound Nat规则,指向已公开的pod。 到目前为止,我可以使用外部IP和指定端口连接到pod。
答案 0 :(得分:2)
取决于您希望如何在同一IP上分离服务。我想到的两种方式是:
答案 1 :(得分:2)
在Azure容器服务中,Azure将使用Load Balancer公开k8s服务,如下所示:
root@k8s-master-E27AE453-0:~# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jasonnginx 10.0.41.194 52.226.33.200 8080:32011/TCP 4m
kubernetes 10.0.0.1 <none> 443/TCP 11m
mynginx 10.0.144.49 40.71.230.60 80:32366/TCP 5m
yournginx 10.0.147.28 40.71.226.23 80:32289/TCP 4m
root@k8s-master-E27AE453-0:~#
通过Azure门户,检查Azure负载均衡器前端IP配置(不同的IP地址):
ACS将创建Load Balancer rules
并自动添加rontend IP
地址 。
如何通过单个天蓝色负载公开多个kubernetes服务 平衡器?
ACS通过Azure负载均衡器公开k8s服务,您是否想要使用单个公共IP地址公开k8s服务?
如果你想用一个公共IP地址公开k8s服务,正如Radek所说,也许你应该使用 Nginx Ingress Controller 。
Ingress Controller的工作原理如下:
答案 2 :(得分:0)
谢谢你们。我想我找到了解决问题的可行办法。我应该更具体地说明我要做什么。
我想通过UDP托管游戏服务器。因此,任何kubernetes入口控制器都不是一个选项,因为它们很少支持UDP路由。 我也不需要在单个机器上托管多个服务1-4每个节点的pod可能是最大的。
我发现了使用:
hostNetwork: true
在yaml配置中,它实际上适用于这种情况。 我直接从主机节点获取IP。然后,我可以在负载均衡器中选择匹配节点并创建NAT或负载平衡规则
答案 3 :(得分:0)
创建多个nodePort类型服务,并修复nodePort。 和云负载均衡器,设置多个监听器组。监听端口与服务的节点端口相同,目标都是worker节点。