Kubernetes K8s-无法从群集中外部访问应用程序

Kubernetes K8s-无法从群集中外部访问应用程序,kubernetes,kubernetes-ingress,amazon-eks,nginx-ingress,kubernetes-pod,Kubernetes,Kubernetes Ingress,Amazon Eks,Nginx Ingress,Kubernetes Pod,我正在学习在私有集群上部署应用程序。应用程序在pod中启动并运行,可以从节点本身访问。我还创建了一个入口控制器服务,但我不确定出了什么问题。nginx入口服务的外部IP始终返回404。有什么解决办法吗 正在运行的服务: 申请服务: Nginx服务: 应用程序入口: 入口yaml: 看起来您的Nginx入口控制器目前没有为入口提供服务。如果入口由控制器提供服务,则在其状态下至少应有一个IP地址。loadBalancer(应为为其提供服务的入口控制器使用的外部IP),而在您的情况下,它看起来

我正在学习在私有集群上部署应用程序。应用程序在pod中启动并运行,可以从节点本身访问。我还创建了一个入口控制器服务,但我不确定出了什么问题。nginx入口服务的外部IP始终返回404。有什么解决办法吗

正在运行的服务:

申请服务:

Nginx服务:

应用程序入口:

入口yaml:

看起来您的Nginx入口控制器目前没有为入口提供服务。如果入口由控制器提供服务,则在其
状态下至少应有一个IP地址。loadBalancer
(应为为其提供服务的入口控制器使用的外部IP),而在您的情况下,它看起来是空的,如下所示:

status:
  loadBalancer: {}
这方面最常见的问题是入口没有定义入口类,或者集群中没有默认入口类

首先,执行一个
k get ingresclass
,查看是否定义了任何入口类。在您的集群中根据Kubernetes版本和Ingress控制器版本,它可以使用IngressClass对象,也可以只使用注释(或两者都使用)

我会尝试简单地将注释
kubernetes.io/ingres.class:nginx
添加到ingres
metadata
下,因为nginx类通常由nginx入口控制器定义。或者,如果您的入口控制器使用的是不同的入口类,我会尝试在注释中指定,那么您的设置应该可以运行


如果您对Ingress类的用途感到好奇,那么它主要可用于将Ingress资源定义与Ingress控制器相关联。在Kubernetes群集上,可能有多个入口控制器,每个入口控制器都有自己的入口类,并且入口资源通过匹配请求的入口类与其中一个相关联

如果未指定入口类,入口将使用默认类,这意味着将自动使用注释为集群默认类的入口类


有关更多信息,请查看此处的文档()

您的Nginx入口控制器目前似乎没有提供入口服务。如果入口由控制器提供服务,则在其
状态下至少应有一个IP地址。loadBalancer
(应为为其提供服务的入口控制器使用的外部IP),而在您的情况下,它看起来是空的,如下所示:

status:
  loadBalancer: {}
这方面最常见的问题是入口没有定义入口类,或者集群中没有默认入口类

首先,执行一个
k get ingresclass
,查看是否定义了任何入口类。在您的集群中根据Kubernetes版本和Ingress控制器版本,它可以使用IngressClass对象,也可以只使用注释(或两者都使用)

我会尝试简单地将注释
kubernetes.io/ingres.class:nginx
添加到ingres
metadata
下,因为nginx类通常由nginx入口控制器定义。或者,如果您的入口控制器使用的是不同的入口类,我会尝试在注释中指定,那么您的设置应该可以运行


如果您对Ingress类的用途感到好奇,那么它主要可用于将Ingress资源定义与Ingress控制器相关联。在Kubernetes群集上,可能有多个入口控制器,每个入口控制器都有自己的入口类,并且入口资源通过匹配请求的入口类与其中一个相关联

如果未指定入口类,入口将使用默认类,这意味着将自动使用注释为集群默认类的入口类


有关更多信息,请查看此处的文档()

您可以共享您的ingress对象的YAML文件吗?@KamolHasan添加到问题中您可以检查Nginx pod的日志吗?您可以共享您的ingress对象的YAML文件吗?@KamolHasan添加到问题中您可以检查Nginx pod的日志吗?[ec2]-user@ip-172-31-19-82服务]$kubectl get ingresclass NAME CONTROLLER PARAMETERS AGE nginx nginx.org/ingres-CONTROLLER 25h应该是这样的吗?您能描述一下它,看看它的注释是否是集群中的默认值吗?您是否尝试在ingress定义中添加
kubernetes.io/ingres.class:nginx
作为注释(以及您已经指定的车身尺寸)?我尝试了。然后我尝试了curl-I-H“Host:vv2ta3ox.mx demo”a6ac7……….eu-central-1.elb.amazonaws.com/命令来获取HTTP/1.1200 OK服务器:nginx/1.19.8日期:2021年4月24日12:05:35 GMT内容类型:text/html内容长度:8597连接:keep-alive过期:Fri,2020年4月24日12:05:35 UTC上次修改:Sat,2021年4月24日协调世界时10:22:43我希望这是个好兆头。但我仍然不知道如何通过浏览器访问该应用程序:|您的入口在/下为您的服务,当您在浏览器上打开url时,您会收到什么?对url的简单调用返回404。但是如果使用扩展名ModHeader将头添加到浏览器-Host:vv2ta3ox.mx-demo。它是有效的-user@ip-172-31-19-82服务]$kubectl get IngressClass NAME控制器参数AGE nginx nginx.org/ingress-CONTROLLER 25h应该是这样的吗?您能描述一下它,看看它的注释是否是集群中的默认值吗?您是否尝试在ingress定义中添加
kubernetes.io/ingres.class:nginx
作为注释(以及您已经指定的车身尺寸)?我尝试了。然后我尝试了curl-I-H“Host:vv2ta3ox.mx演示”a6ac7……….eu ce