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

How to expose kubernetes nginx-ingress service on public node IP at port 80 / 443?

我在集群中安装了 ingress-nginx。我尝试使用 kind: nodePort 选项公开服务,但这只允许 30000-32767 之间的端口范围(AFAIK)...我需要在端口 80 公开服务,用于 http 和443 for tls,这样我就可以 link A Records for the domains directly to the service.有谁知道如何做到这一点?

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

如果您想要从服务获取 80 端口的 IP,您可以使用服务配置 yaml 中的 externalIP 字段。您可以在此处找到如何编写 yaml Kubernetes External IP

但是如果您的用例真的很像启动入口控制器并且运行它不需要将服务暴露在外部。

如果您使用的是裸机,请将您的入口控制器服务类型更改为 NodePort 并添加反向代理以将流量流向您选择的 NodePort.[=15 入口控制器服务=]

正如 @Pramod V 回答的那样,如果您在入口控制器服务中使用 externalIP,那么您在 EndPoints 中丢失了真实的远程地址。

可以找到更完整的答案Here