【问题标题】:Expose application on kubernetes using nginx ingress controller - baremetal way使用 nginx 入口控制器在 kubernetes 上公开应用程序 - 裸机方式
【发布时间】:2021-09-20 23:44:00
【问题描述】:

我是 K8s 的新手,试图通过 IP 访问应用程序。以下是情况-

  1. 集群准备就绪,1个master节点和1个worker节点,pods处于运行状态
  2. 借助doc 安装了 nginx 入口控制器
  3. 现在我可以访问工作节点(在浏览器上粘贴工作 IP,当前显示 404 状态),我想访问在端口 4200 和 8080 上运行的应用程序
  4. 如何通过XXX.XXX.XXX.XXX/app1XXX.XXX.XXX.XXX/app2 等基于路径的方式访问我的应用程序,在哪些文件中以及我必须做哪些更改?服务的状态显示为<pending>?这是什么意思????

【问题讨论】:

  • Pending 很可能意味着 LoadBalancer 服务正在期待一些东西来处理它们并为它们分配一个外部 IP 地址,然后可以使用它来访问它们。在裸机上,您可能需要查看 MetalLB 以将负载平衡功能添加到您的集群。如果您对负载平衡不感兴趣,您可以随时使用 NodePorts 服务从集群节点的 url 访问您的应用程序
  • 请记住,Nginx 有 3 种类型。开源 Nginx 入口控制器、Nginx Incorporaton (nginx inc) 和 Nginx Incorporaton Plus。尝试使用开源 nginx。 Here 是裸机的示例。您也可以找到considerations

标签: kubernetes kubectl kubernetes-ingress nginx-ingress bare-metal-server


【解决方案1】:

如果您使用“LoadBalancer”类型作为服务,显然您应该安装或使用第 3 方 LoadBalancer,因为您使用的是 BARE-METAL 环境。例如,您可以使用 MetalLB。

您可以在下面找到有关 MetalLB 的更多信息: https://blog.inkubate.io/install-and-configure-metallb-as-a-load-balancer-for-kubernetes/

如果没有,您可能必须使用“NodePort”类型作为服务。

【讨论】:

    【解决方案2】:

    为什么需要裸机上的入口控制器?

    尝试使用简单的 NodePort 服务类型,它会给你同样的结果。当您将入口控制器置于云负载均衡器之后时,它更可取。

    回到你的问题 4:

    只有在入口控制器前面有云负载均衡器时才能执行此操作,在任何其他情况下,您必须执行以下操作:XXX.XXX.XXX.XXX:$INGRESS_CONTROLLER_PORT/$PATH

    指的是:XXX.XXX.XXX.XXX ($K8S_cluster_IP)。

    这与 NodePort 服务的场景几乎相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2021-12-25
      • 2020-11-29
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多