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

5
我在集群中安装了ingress-nginx。我尝试使用kind:nodePort选项公开服务,但这只允许端口范围在30000-32767之间(据我所知)...... 我需要将服务暴露在80端口上进行http和443端口进行tls,以便我可以直接将A记录链接到服务。有谁知道如何实现这一点吗?
我之前尝试过type:LoadBalancer,这个方法也可以,但是这会为每个集群在我的云提供商上创建一个新的外部负载均衡器。在我当前的情况下,我想要生成多个小型集群。为每个集群创建一个新的(digitalocean)负载均衡器太昂贵了,因此我决定使用各自拥有内部ingress-controller并直接在80/443上公开该控制器的方式运行每个集群。

嗨,如果你想公开暴露它,请使用 type: LoadBalancer。这里是示例 - Suresh Vishnoi
"kubectl get ingresses" 是什么意思? - mon
@SureshVishnoi 请查看更新后的问题。 - Rotareti
2个回答

3

如果你在裸机上操作,则需要将你的ingress-controller服务类型更改为NodePort,并添加一个反向代理以流量到达选择的NodePort的ingress-controller服务。

正如@Pramod V所回答的,如果你在ingress-controller服务中使用externalIP,那么你将失去真实远程地址在你的Endpoints中的作用。

更全面的答案可以在这里找到。


3

如果你想从服务中获得80端口的IP地址,你可以在服务配置yaml中使用externalIP字段。你可以在这里找到如何编写yaml文件的方法 Kubernetes External IP

但是,如果你的用例真的是让入口控制器正常运行,那么它不需要将服务外部暴露。


1
我认为externalIPs正是我所需要的。您能否详细说明一下您回答中的第二部分呢?如果它没有外部暴露,那么我该如何将入口暴露给公众呢? - Rotareti
好的,我的意思是说,如果您想为Kubernetes集群引入一个入口控制器(Ingress Controller),则不需要将服务暴露在外部,只需拥有公开的节点IP即可。具体请参考:https://kubernetes.io/docs/concepts/services-networking/ingress/。 - Pramod V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接