【问题标题】:Nginx Controller Returns 404 Not Found On Path and Default BackendNginx 控制器在路径和默认后端返回 404 Not Found
【发布时间】:2022-01-22 20:15:41
【问题描述】:

我已经使用 Vagrant 创建了一个 Kubernetes 集群。我为它创建了一个 Nginx pod 和一个 Cluster IP 服务。我可以卷曲 pod 和服务并获得成功的结果。我现在已经从https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters 安装了一个 Nginx 入口控制器并运行了以下命令: kubectl create ingress nginxingress --rule="/nginx=nginx-service:80" --annotation nginx.ingress.kubernetes.io/rewrite-target=/ --default-backend=nginx-service:80 据我所知,它们都已正确设置,没有错误。但是每当我尝试卷曲路径然后它失败时,控制器就会不断抛出 404 Not found。 更多可能有帮助的信息:
服务
入口

任何帮助将不胜感激

【问题讨论】:

  • 你是如何处理 Nginx 的服务的?服务 Nginx 没有外部 IP。另外请尝试在您的配置中添加入口类
  • 嗨@HarshManvar 我去:curl :NodePort/nginx。节点端口是控制器服务的节点端口。你是什​​么意思入口类?不是只有实现特定的路径类型需要吗?
  • ingress 类是将入口和入口控制器绑定在一起的类,它是您想要使用的一种连接。单个集群中可能有多个入口控制器运行,因此入口是关键点

标签: kubernetes kubernetes-ingress nginx-ingress


【解决方案1】:

尝试将入口类注释添加到入口配置。 kubernetes.io/ingress.class: "nginx"

使用下面的 YAML 作为参考并尝试更新配置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-myserviceb
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: myserviceb.foo.org
    http:
      paths:
      - path: /nginx
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80

【讨论】:

  • 添加类有效。谢啦。这么简单的问题
  • 如何查看需要将名称放入入口类字段的控制器的名称?
  • 默认情况下它会是 Nginx 的 nginx 其他你可以搜索或手动设置。您还可以通过传递参数或更新控制器配置在入口 Nginx 控制器中设置自己的类名。
  • 啊,好酷。我看到 nginx 控制器创建了一个名为 nginx 的 Ingress 类
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2017-07-15
  • 2016-03-16
相关资源
最近更新 更多