首页 > 解决方案 > Minikube NGINX Ingress 返回 404 Not Found

问题描述

我创建了一个部署、一个服务和一个入口,以便能够从我的主机访问 NGINX 网络服务器,但我不断收到 404 Not Found。经过很多小时的故障排除后,我已经到了非常欢迎一些帮助的地步。

步骤和相关的yaml文件如下。

启用 Minikube NGINX 入口控制器

minikube 插件启用入口

创建 NGINX Web 服务器部署

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 服务来管理对 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 # This is pointing to the control plane IP
    http:
      paths:
      - backend:
          service:
            name: webserver-white-svc
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific

测试

当连接到一个 pod 并执行时curl http://localhost,它会返回 NGINX 主页 html,因此该 pod 看起来不错。

创建测试 pod 并执行时curl http://<service-cluster-ip>,它返回 NGINX 主页 html,因此服务看起来不错。

在连接到 ingress nginx 控制器 pod 并执行时curl http://<service-cluster-ip>,它也返回了 NGINX 主页 html,因此入口控制器和服务之间的连接看起来不错。

当连接到控制平面minikube ssh并执行时,ping <nginx-controller-ip>我看到它到达了 nginx 控制器。

我进行了相同的测试,但使用 NodePort 服务而不是 ClusterIP 并注意到我可以使用节点端口访问 NGINX 主页,但不能使用 Ingress 端口。

知道我可能做错了什么和/或我还能做些什么来更好地解决这个问题吗?

其他注意事项

更新/解决方案:

kubernetes.io/ingress.class: "nginx"解决方案是在 Ingress 上添加缺少的注释。

标签: kubernetesminikubenginx-ingress

解决方案


解决方案是在 Ingress 上添加缺少的注释 kubernetes.io/ingress.class: "nginx"。


推荐阅读