3

我想通过单个负载均衡器公开多个服务。每个服务都指向一个 pod。

到目前为止,我试图:

kubectl expose <podName> --port=7000 

并在 Azure 门户中手动设置负载平衡规则或入站 Nat 规则,指向暴露的 pod。到目前为止,我可以使用外部 IP 和指定端口连接到 pod。

4

4 回答 4

3

取决于您希望如何在同一 IP 上分离服务。我想到的两种方法是:

  • 使用 NodePort 服务,然后将 LB 中的一些端口映射到集群节点上的该部分。这提供了端口分离。
  • 我认为更有趣的方式是使用 Ingress/IngressController。您将只在 80 和 443 等标准端口上公开 IC,然后它将通过主机名和 uri 映射到您的服务
于 2018-01-17T23:20:14.320 回答
3

在 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

入口控制器的工作方式如下:

在此处输入图像描述

于 2018-01-18T02:30:34.587 回答
0

创建多个 nodePort 类型的服务,并修复 nodePort。和云负载均衡器,设置多个监听组。监听端口与服务的节点端口相同,目标是所有工作节点。

于 2021-02-19T07:41:05.657 回答
0

多谢你们。我想我已经找到了解决我的问题的可行方法。我应该更具体地说明我将要做什么。

我想通过 UDP 托管游戏服务器。所以任何 kubernetes 入口控制器都不是一个真正的选择,因为它们很少支持 UDP 路由。我也不需要在单个机器上托管大量服务,每个单个节点 1-4 个 pod 可能是最大值。

我发现关于使用:

hostNetwork: true 

在 yaml 配置中,它实际上适用于这种情况。我直接从主机节点获取 IP。然后我可以在负载均衡器中选择匹配节点并创建 NAT 或负载均衡规则

于 2018-01-18T09:27:47.730 回答