zoukankan      html  css  js  c++  java
  • kubernetes ingress 重定向地址错误

    环境:

    有两个 kubernetes 集群:

    一个版本为1.11,后面使用A集群代替,ingress 镜像版本为 0.19(quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0)

    一个版本为1.16,后面使用B集群代替,ingress 镜像版本为 0.26.1

    问题:

    pod 中有一个 http 接口为 /v1 该路由地址(使用flask)。发现在同样的 ingress 配置(如下)。A集群中能访问 /webtest/v1,B集群为 404 错误

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: webtest
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/use-regex: "true"
    spec:
      rules:
      - http:
          paths:
          - path: /webtest
            backend:
              serviceName: webtest
              servicePort: 80

    初步排查为 nginx 路由的地址错误,查看 ingress pod 详细日志发现,在 A集群中,访问地址为 /v1,而在 B集群中访问地址为 /

    备注:ingress 中使用了重定向,目的是期望在匹配路径的时候将 /webtest 去掉

    继续查看 ingress pod 中的 nginx 配置,发现有如下差异

    在 A集群 中

    ...
    location ~* ^/webtest/?(?<baseuri>.*){}
    ...

    在 B集群 中

    ...
    location ~* "^/webtest/"{}
    ...
    

    解决方案:

    在 B集群(新版的ingress) 中,使用以下方式配置 ingress

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: webtest
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /$1
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/use-regex: "true"
    spec:
      rules:
      - http:
          paths:
          - path: /webtest/(.+)
            backend:
              serviceName: webtest
              servicePort: 80
    
  • 相关阅读:
    论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points
    论文阅读 | CornerNet:Detecting Objects as Paired Keypoints
    论文阅读 | FPN:Feature Pyramid Networks for Object Detection
    关于字符串 “*****AB**C*D*****” 中前缀、后缀和中间 '*' 的处理
    #include< > 和 #include” ” 的区别
    小朋友排队
    核桃的数量
    操作格子
    字串统计
    关联矩阵
  • 原文地址:https://www.cnblogs.com/newguy/p/11758476.html
Copyright © 2011-2022 走看看