簡體   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