我想通过单个负载均衡器公开多个服务。每个服务都指向一个 pod。
到目前为止,我试图:
kubectl expose <podName> --port=7000
并在 Azure 门户中手动设置负载平衡规则或入站 Nat 规则,指向暴露的 pod。到目前为止,我可以使用外部 IP 和指定端口连接到 pod。
我想通过单个负载均衡器公开多个服务。每个服务都指向一个 pod。
到目前为止,我试图:
kubectl expose <podName> --port=7000
并在 Azure 门户中手动设置负载平衡规则或入站 Nat 规则,指向暴露的 pod。到目前为止,我可以使用外部 IP 和指定端口连接到 pod。
取决于您希望如何在同一 IP 上分离服务。我想到的两种方法是:
在 Azure 容器服务中,Azure 会使用负载均衡器来暴露 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地址。
如何通过单个 azure 负载均衡器公开多个 kubernetes 服务?
ACS 通过该 Azure 负载均衡器公开 k8s 服务,您的意思是要使用单个公共 IP 地址公开 k8s 服务吗?
如果你想用单个公共 IP 地址公开 k8s 服务,正如 Radek 所说,也许你应该使用Nginx Ingress Controller。
入口控制器的工作方式如下:
创建多个 nodePort 类型的服务,并修复 nodePort。和云负载均衡器,设置多个监听组。监听端口与服务的节点端口相同,目标是所有工作节点。
多谢你们。我想我已经找到了解决我的问题的可行方法。我应该更具体地说明我将要做什么。
我想通过 UDP 托管游戏服务器。所以任何 kubernetes 入口控制器都不是一个真正的选择,因为它们很少支持 UDP 路由。我也不需要在单个机器上托管大量服务,每个单个节点 1-4 个 pod 可能是最大值。
我发现关于使用:
hostNetwork: true
在 yaml 配置中,它实际上适用于这种情况。我直接从主机节点获取 IP。然后我可以在负载均衡器中选择匹配节点并创建 NAT 或负载均衡规则