如何在80/443端口的公共节点IP上公开kubernetes nginx-ingress服务?

时间:2018-04-02 04:56:37

标签: nginx kubernetes load-balancing kubernetes-ingress

我在群集中安装了ingress-nginx。我尝试使用kind: nodePort选项公开服务,但这只允许30000-32767(AFAIK)之间的端口范围...我需要在端口80公开服务以获取http和对于tls 443,我可以将域A Records直接链接到服务。有谁知道如何做到这一点?

之前我尝试使用type: LoadBalancer,但工作正常,但这会在我的云提供商为每个群集创建一个新的外部负载均衡器。在我目前的情况下,我想生成多个迷你集群。为每个集群创建一个新的(digitalocean)Load Balalancer是太昂贵了,所以我决定用它自己的内部入口控制器来运行每个集群,并直接在80/443上公开它。

2 个答案:

答案 0 :(得分:2)

如果您希望从服务获得80端口的IP,您可以使用service config yaml中的externalIP字段。你可以在这里找到如何写yaml Kubernetes External IP

但如果您的用例非常像启动和运行入口控制器,则不需要将服务暴露在外部。

答案 1 :(得分:1)

如果您使用的是裸机,则将您的入口控制器服务类型更改为NodePort,并添加一个反向代理,以使用选定的NodePort将流量流向入口控制器服务。

@Pramod V回答的那样,如果您在入口控制器服务中使用externalIP,则您将在EndPoints中释放真实的远程地址。

可以找到更完整的答案Here