繁体   English   中英

Kubernetes Helm Nginx-inress达到“默认后端-404”

[英]Kubernetes Helm Nginx-ingress is hitting “default backend - 404”

注意,我仍在学习Kubernetes和Helm。

在运行Kubernetes集群的Mac(Edge)Docker的本地主机上安装带有Helm的Nginx-ingress。

具有以下内容:

helm install --name my-release stable/nginx-ingress

我从curl localhost得到以下答复

default backend - 404

这是个好消息,但是从这里去哪里。 我想打一个服务/集群IP。 通常在Nginx中,我会将其放在conf文件中。 在舵图值中,我可以看到它指的是:

controller:
5     name: controller
6     image:
7       repository: k8s.gcr.io/nginx-ingress-controller
…   
183   enabled: true
184 
185   name: default-backend
186   image:
187     repository: k8s.gcr.io/defaultbackend
188     tag: "1.3"

你知道它是如何工作的吗?

入口概念将路由规则的配置外部化。 规则没有被放在与代理一起放置的conf文件中,而是被视为在部署应用程序时部署的Kubernetes资源。 使用@Omer Levi Hevroni指向的示例 ,您可以拥有一个Ingress资源,该资源的rules:中包含此规范rules:部分:

  - host: api.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: hello-world-svc
          servicePort: 8080

这是基于主机的规则,这意味着使用请求api.sample.com/到达入口控制器的任何流量(假定DNS路由指向入口控制器)都应发送到Service hello-world-svc更具体地说是http:// hello-world-svc:8080 /

可以添加其他Ingress资源,也可以扩展此Ingress资源 ,以根据不同的请求主机(例如,诸如anotherapi.sample.com之类的子域)或路径(例如api.sample.com/specialpath)路由到不同的服务。 两者都可以与rules规范一起使用,例如:

  - host: subdomain1.example.com
    http:
      paths:
      - path: /path1
        backend:
          serviceName: s1
          servicePort: 80
      - path: /path1
        backend:
          serviceName: s2
          servicePort: 80
  - host: subdomain2.example.com
    http:
      paths:
      - path: /path1
        backend:
          serviceName: s3
          servicePort: 80
      - path: /path2
        backend:
          serviceName: s4
          servicePort: 80

它将直接将http://subdomain1.example.com/path1定向到内部url http:// s1:80 / path1等。如果不需要内部url的最后一部分(在这种情况下为path1 ),则需要重写-target批注可以与nginx入口控制器一起使用,只要从nginx类开始对Ingress资源进行注释。

我怀疑您已经知道所有这一切,因为问题是前一段时间的,但是我认为填写答案会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM