首页 > 解决方案 > 即使使用 Ingress,我们是否需要将服务保留为 nodePort?

问题描述

您好 Kubernetes 专家,

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

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

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

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

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

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

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

或者我的 yaml 文件出了什么问题。我试着阅读它,但无法得到任何相关的解释。

谢谢你,阿尼什

标签: kuberneteskubernetes-ingressminikubemicrok8sk3s

解决方案


首先,ServiceIngress资源在云提供商之间的工作方式略有不同。例如在 Google Cloud Platform 和AWS上,您需要在使用NodePort时使用服务,Ingress但在例如 OpenShiftClusterIP上工作。

大多数情况下,原因是负载均衡位于集群外部(在我工作的 OpenShift 环境中不是这种情况)。

Google Cloud 文档中,NodePort用于负载平衡,但ClusterIP如果您的负载平衡器是“容器原生”。

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


推荐阅读