问题描述
我是 K8s 的新手,试图通过 IP 访问应用程序。下面是情况-
- 集群已就绪,1 个主节点和 1 个工作节点,Pod 处于运行状态
- 在此 doc 的帮助下安装了 nginx 入口控制器
- 现在我可以访问工作节点(在浏览器上粘贴工作 IP,当前显示 404 状态),我想访问在端口 4200 和 8080 上运行的应用
- 如何通过基于路径的方式(如
XXX.XXX.XXX.XXX/app1
和XXX.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 服务相同。