【问题标题】:How to expose kubernetes nginx-ingress service on public node IP at port 80 / 443?如何在端口 80 / 443 的公共节点 IP 上公开 kubernetes nginx-ingress 服务?
【发布时间】:2018-09-11 07:54:54
【问题描述】:

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

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

【问题讨论】:

  • 嗨,如果你想公开它,请使用type: LoadBalancer。这是example
  • “kubectl get ingresses”说明了什么?
  • @SureshVishnoi 查看更新后的问题。

标签: nginx kubernetes load-balancing kubernetes-ingress


【解决方案1】:

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

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

可以找到更完整的答案Here

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我认为externalIPs 与我正在寻找的完全一样。您能否详细说明答案的第二部分?如果不对外暴露,那么如何将入口暴露给公众呢?
    • 好的,所以我的意思是说,如果您正在寻找为 kubernetes 集群 kubernetes.io/docs/concepts/services-networking/ingress 提供入口控制器,那么它不需要将服务暴露在外部它​​应该足以拥有节点公开的 IP。
    猜你喜欢
    • 2019-09-18
    • 2018-07-29
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2020-03-19
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多