繁体   English   中英

Kube.netes 入口 nginx 路由到同一路径(不同的服务;不同的端口)

[英]Kubernetes ingress nginx route to same path (different service; different port)

我在 Kube.netes 中有一些简单的部署、pod、服务和 nginx 入口。 我想使用入口路由到服务 (cluster-ip)。

但是,对于具有相同路径(即 /abc/def)的 2 个 pod,有 2 个服务。 在我应用 ingress.yaml 文件后,我收到一条错误消息说“nginx:[emerg] duplicate location “/abc/def/” in /tmp/nginx/nginx-cfg728288520:2893”。

我可以知道如何让入口接受具有不同服务和不同端口的相同路径吗?

这是 ingress.yaml 文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: ingress-nginx-default
  namespace: default
spec:
  rules:
  - host: 
    http:
      paths:
      - path: /abc/def/
        pathType: Prefix
        backend:
         service:
           name: service1
           port:
             number: 8090     
      - path: /abc/def
        backend:
          service:
            name: service2
            port:
             number: 8068
        pathType: Prefix
  ingressClassName: nginx

“nginx:[emerg] /tmp/nginx/nginx-cfg728288520:2893 中的重复位置“/abc/def/””。 此错误表示具有两个相同路径的同一主机是重复位置。

您可以使用基于路径或基于名称的虚拟主机的简单扇出。 为此,您需要有两个需要在入口中提及的主机。

根据您的示例,您很可能想要foo.bar.com and bar.foo.com类的东西。 这是 Kube.netes 文档中的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
    - host: foo.bar.com
      http:
        paths: #path_name
          - backend:
              serviceName: service1
              servicePort: 80
    - host: bar.foo.com
      http:
        paths: #path_name
          - backend:
              serviceName: service2
              servicePort: 80

暂无
暂无

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

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