【问题标题】:getting not found: NGINX Ingress找不到:NGINX 入口
【发布时间】:2021-11-12 18:24:22
【问题描述】:

我正在尝试学习 .NET 微服务。我一直在关注Youtube 的精彩教程(时间:4:44:55,添加 API 网关)。在 NGINX Ingress 出现之前,一切都运行良好。我从培训师的 GitHub 帐户中粘贴了相同的 YAML 文件,我仔细检查了所有内容,但找不到任何内容:

我可以看到所有的 pod 和服务都运行良好:

我更新了我的主机文件。

我错过了什么?

网址,我使用的是:http://acme.com/api/platforms/

错误:HTTP 错误 404。未找到请求的资源。

Ingress YAML 的输出:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"nginx","nginx.ingress.kubernetes.io/use-regex":"true"},"name":"ingress-srv","namespace":"default"},"spec":{"rules":[{"host":"acme.com","http":{"paths":[{"backend":{"service":{"name":"platforms-clusterip-srv","port":{"number":80}}},"path":"/api/platforms","pathType":"Prefix"},{"backend":{"service":{"name":"commands-clusterip-srv","port":{"number":80}}},"path":"/api/c/platforms","pathType":"Prefix"}]}}]}}
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
  creationTimestamp: "2021-09-18T00:12:41Z"
  generation: 1
  name: ingress-srv
  namespace: default
  resourceVersion: "2274742"
  uid: a7376202-8b1b-4f1a-a42f-08de5f602192
spec:
  rules:
  - host: acme.com
    http:
      paths:
      - backend:
          service:
            name: platforms-clusterip-srv
            port:
              number: 80
        path: /api/platforms
        pathType: Prefix
      - backend:
          service:
            name: commands-clusterip-srv
            port:
              number: 80
        path: /api/c/platforms
        pathType: Prefix
status:
  loadBalancer:
    ingress:
    - hostname: localhost

服务:

更新:尝试了以下命令并获得了一些新信息:

更新:结果

Kubectl 获取 pod --namespace=ingress-nginx

【问题讨论】:

  • 你能做一个k get ingress your-ingress-here -oyaml吗?
  • 不,没有更新。尽管如此,还是试图找出问题所在。 @WytrzymałyWiktor
  • @KiddoDeveloper 你能发布第一条评论的输出吗?
  • @AndD 我更新了输出。抱歉耽搁了
  • @JakubSiemaszko 我更新了输出。抱歉耽搁了

标签: docker kubernetes .net-core microservices kubernetes-ingress


【解决方案1】:

尝试从入口中删除正则表达式注释

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: ingress-srv
  namespace: default
spec:
  rules:
  - host: acme.com
    http:
      paths:
      - backend:
          service:
            name: platforms-clusterip-srv
            port:
              number: 80
        path: /api/platforms
        pathType: Prefix
      - backend:
          service:
            name: commands-clusterip-srv
            port:
              number: 80
        path: /api/c/platforms
        pathType: Prefix

或者试试这个nginx.ingress.kubernetes.io/rewrite-target: /

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: acme.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: commands-clusterip-srv
            port:
              number: 80

在上述入口中,所有请求都将转到服务commands-clusterip-srv,因此如果您的主机是acme.com,则从浏览器端传递任何 /api 或 /api/c 入口都会将流量路由到该服务

错误 404 显然意味着您的 Nginx 配置存在问题 path 不匹配或 host 问题,Nginx 无法找到上游或目标,因此它会抛出 404。

更新

尝试添加IP并进入主机文件

192.168.1.28 acme.com

我不确定您是否已使用 IP POD 来理想地卷曲,您是否应该使用 acme.com 来访问数据。

也希望你的服务、部署和入口在同一个命名空间中。

【讨论】:

  • 感谢您的回复。我尝试了两种方法,但得到了同样的错误。我更新了 YAML 文件并运行了应用命令。
  • 另外,我在本地机器上使用邮递员。网址:acme.com/api/platforms。此外,演示中提到了这个示例 'acme.com' 主机,所以我只是使用了相同的主机。我在主机文件中更新了这个主机。
  • 您是否仍然收到 404 或任何其他错误代码?
  • 是的,我仍然收到相同的 404:

    HTTP 错误 404。找不到请求的资源。

    。另外,我更新了我的问题中的一些新信息
  • 更新的答案请检查。确保您的部署服务和入口都在同一个命名空间中运行。也不要使用 POD ip 来 CURL 它永远不会工作,因为这些是由 K8s 管理的内部 IP。使用 192.168.1.28 您的主机 IP 或 localhost。
【解决方案2】:

首先,感谢 Harsh 的宝贵时间。我尝试了所有的东西,但没有发现错误。

我能够在 HTTPS 上解决它真的是一个奇迹。我可以访问“https://acme.com/api/platforms”。但是,HTTP 仍然给我同样的错误。但是,我对 HTTPS 很好

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 2022-06-16
    • 2020-08-05
    • 2019-07-17
    • 1970-01-01
    • 2020-06-02
    • 2019-12-16
    • 2015-02-03
    相关资源
    最近更新 更多