当前位置: 首页 > 知识库问答 >
问题:

未找到Minikube NGINX入口返回404

龙飞
2023-03-14

我创建了一个部署、一个服务和一个入口,以便能够从我的主机访问NGINX web服务器,但我一直没有找到404。经过长时间的故障排除,我已经到了一个非常欢迎帮助的地步。

步骤和相关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

创建入口以从集群外部访问服务

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看起来不错。

创建测试盒并执行curl http时://

连接到ingress nginx控制器pod并执行curl http时://

当使用minikube ssh连接到控制平面并执行ping时

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

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

其他注释

  • minikube版本:v1。23.0
  • 客户机和服务器上的kubectl版本:v1。22.1
  • 操作系统:Ubuntu 18.04。5 LTS(仿生海狸)

更新/解决方案:

解决方案是添加缺少的注释kubernetes。io/入口。类:入口上的“nginx”


共有1个答案

卫宏硕
2023-03-14

解决方案是在入口上添加缺失的注释kubernetes.io/ingress.class:“nginx”。

 类似资料:
  • 我正在学习这个教程,它试图通过构建一个最小的JVM来最小化JVM内存占用。

  • 我有一个xamarin应用程序,可以从webAPI中提取数据。我多次检查api地址,我确信它是正确的。当我调试代码时,服务器上出现404 not found错误。然而,当我将URL复制并粘贴到浏览器时,我得到了预期的结果。我不明白为什么我的应用程序返回404。 我的方法: 我的桥接方法到HttpClient的PostAsync方法: 代币:正确 API URL:正确(我从调试输出中检查“/”符号。

  • 我正在用Laravel 8制作一个论坛,基本上每当用户在这个论坛上提问时,它应该被重定向到这个问题。 我还想使重定向过程基于问题的字段。

  • 我用Spring 4和Spring security设置了一个简单的REST API web.xml AccountController.java mysabisabi-servlet.xml mysabisabi-security.xml 应用程序上下文.xml 日志文件 当我尝试访问 我得到 我已经尝试了 和作为url模式,但仍然相同。 有人能指出我错过了什么吗? 谢了。

  • 我正在按照一些教程从头开始建立一个spring mvc项目。最初,我将web应用程序配置为在Tomcat中运行。我编写了一个简单的controller类,请求点击“/”。但tomcat总是向我显示“HTTP状态404-找不到”错误。 我看了很多这样的问题,但那些答案对我都不起作用 删除tomcat安装并重新配置。当点击localhost:8080/时,我将获得tomcat主页。 检查了代码的拼写

  • 当我从JavaScript客户端调用AWS API网关时,会出现404 not found错误,因为SDK调用了错误的endpoint: https://www.myserver.com/abc123.execute-api.us-east-1.amazonaws.com/dev/status 而不是 https://abc123.execute-api.us-east-1.amazonaws.c