使用 nginx 入口控制器在 kubernetes 上公开应用程序 - 裸机方式

问题描述

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

enter image description here

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

解决方法

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

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

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

,

为什么需要在裸机上使用入口控制器?

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

回到你的问题 4:

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

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

这几乎与 NodePort 服务相同。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...