Minikube配置NGINX Ingress访问服务返回404 Not Found问题求助
Minikube环境下Ingress访问NGINX服务返回404问题排查与解决
问题描述
创建了Deployment、Service和Ingress资源,希望从宿主机访问集群内的NGINX网页服务器,但访问时始终返回404 Not Found。经过长时间排查仍未定位问题,相关操作步骤和配置文件如下:
相关操作与配置
启用Minikube NGINX Ingress控制器
执行命令:minikube addons enable ingress
创建NGINX网页服务器Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: webserver-white labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx-webserver-white template: metadata: labels: app: nginx-webserver-white spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
创建ClusterIP Service管理Pod访问入口
apiVersion: v1 kind: Service metadata: name: webserver-white-svc labels: run: webserver-white-svc spec: type: ClusterIP ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx-webserver-white
创建Ingress实现集群外访问服务
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: webserver-white-ingress namespace: default annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: defaultBackend: service: name: webserver-white-svc port: number: 80 rules: - host: white.example.com # 该域名指向控制平面IP http: paths: - backend: service: name: webserver-white-svc port: number: 80 path: / pathType: ImplementationSpecific
已完成的排查测试
- 登录任意NGINX Pod执行
curl http://localhost,可正常返回NGINX首页HTML,Pod运行状态正常。 - 启动测试Pod执行
curl http://<service-cluster-ip>,可正常返回NGINX首页HTML,Service配置正常。 - 登录NGINX Ingress控制器Pod执行
curl http://<service-cluster-ip>,可正常返回内容,Ingress控制器到Service的链路连通。 - 执行
minikube ssh登录控制平面节点,执行ping <nginx-controller-ip>可正常连通Ingress控制器。 - 改用NodePort类型Service测试,可通过节点端口正常访问NGINX首页,但仍无法通过Ingress端口访问。
环境信息
- minikube版本:v1.23.0
- 客户端与服务端kubectl版本:v1.22.1
- 操作系统:Ubuntu 18.04.5 LTS (Bionic Beaver)
解决方案
最终定位问题为Ingress资源缺少注解kubernetes.io/ingress.class: "nginx",添加该注解后问题解决。
内容的提问来源于stack exchange,提问作者Daniel Serrão
相关产品推荐
相关产品推荐

