【问题标题】:multiple ingress are not working in kubernetes多个入口在 kubernetes 中不起作用
【发布时间】:2020-02-26 22:25:26
【问题描述】:

我的入口有问题,我的单个 kubernetes 集群中有多个环境......现在的问题是,如果我有一个单一的环境,它在以下配置下工作得非常好,只要我部署第二个环境和点击第二个环境的 ip,即使服务名称不同,它也会开始指向第一个环境

我的第一个入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/add-base-url: "true"
spec:
  rules:
  - host: test.com
    http:
      paths:
        - path: "/"
          backend:
            serviceName: servicetest-1
            servicePort: 1000
        - path: "/test"
          backend:
            serviceName: servicetest-1
            servicePort: 2000

我的第二个入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/add-base-url: "true"
spec:
  rules:
  - host: test.com
    http:
      paths:
        - path: "/"
          backend:
            serviceName: servicetest-2
            servicePort: 1000
        - path: "/test"
          backend:
            serviceName: servicetest-2
            servicePort: 2000

问题是,如果我在第一个环境中删除我的入口资源,第二个环境开始正常工作。

另外一点,我的两个入口资源都部署在同一个命名空间中

这是我需要在注释或重定向中做的事情

感谢任何帮助

【问题讨论】:

    标签: kubernetes kubernetes-ingress


    【解决方案1】:

    两个Ingress 具有相同的name 并且在相同的namespace 中。由于两个入口之间的唯一区别是 spec.rules.http.paths.backend.serviceName 并且 Name 和 Namespace 保持不变,因此 Kubernetes 会覆盖以前的配置而不是创建新资源。

    ingress.extensions/test-ingress configured

    您应该更改ingress 资源的名称。

    【讨论】:

    • 我的错...实际上是不同的名字...我错误地提到了
    • 好吧,我明白了。您对同一主机中的同一路径有多个规则。 “/”路径有两条规则。我认为默认情况下入口会选择第一条规则。
    • @magic 我认为你应该阅读Ingress Patch Matching: github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/… 并查看Path rewrite: kubernetes.github.io/ingress-nginx/examples/rewrite 中的一些示例。在NGINX 中,正则表达式遵循第一个匹配策略。如果您不完全理解这一点,您应该创建一个新问题,因为此答案与您提供的信息相符。
    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 2019-11-01
    • 2020-05-10
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2021-11-24
    相关资源
    最近更新 更多