即使使用了 Ingress,我们是否也需要将服务保留为 nodePort?

ani*_*nil 5 kubernetes minikube kubernetes-ingress microk8s k3s

Kubernetes 专家您好,

试图在这里获得更好的理解。

我已经使用常规部署yaml和服务yaml创建了一个部署 该服务是节点端口,然后我创建了一个入口并指向该服务

尝试访问该服务,它在 nginx 入口的默认端口 80 上按预期工作。

接下来创建相同的部署和服务文件。这里唯一的例外是节点端口的安装选择了 ClusterIP。创建了一个 Ingress 并指向了服务。

尝试访问该服务,但它只是在 nginx 主页上失败,并且没有对我的应用程序进行任何路由。

我知道nodeport是将应用程序暴露给外部世界的。但随后我使用 Ingress 来实现相同的功能。

即使我们使用Ingress,我们真的需要将服务设置为节点端口吗???

或者我的 yaml 文件出了严重的问题。我尝试阅读有关它的内容,但无法得到任何相关的解释。

谢谢你,安尼什

Jon*_*nas 4

首先,不同云提供商的资源工作方式Service略有Ingress不同。例如,在 Google Cloud Platform 和AWS上,您需要NodePort在使用时使用服务Ingress,但在例如 OpenShift 上ClusterIP可以正常工作。

大多数情况下,原因是负载均衡器位于集群外部(我工作的 OpenShift 环境并非如此)。

Google Cloud 文档来看,用于NodePort负载平衡,但ClusterIP如果您的负载平衡器是“容器本机”。

在服务清单中,除非您使用容器本机负载平衡,否则必须使用 type: NodePort。如果使用容器本机负载均衡,请使用类型:ClusterIP。