kubernetes 获取503服务在进行配置后不可用

ldxq2e6h  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(222)

我有应用程序“test.abc.com“。我想在不同的服务之间传输请求。

示例或预期输出

  • 当用户点击test.abc.com--〉时,它将转到abc-demo-frontend-external服务
  • 当用户点击test.abc.com/main.jstest.abc.com/main.css或任何.css/ .js文件--〉时,将转到abc-demo-frontend服务

我添加了以下配置

apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: test-demo-frontend-ingress
          annotations:
            kubernetes.io/ingress.class: nginx
            nginx.ingress.kubernetes.io/ssl-redirect: 'false'
            nginx.ingress.kubernetes.io/use-regex: "true"
        spec:
          rules:
            - host: "test.abc.com"
              http:
                paths:
                  - path: /[^\/#?]+\.(?:css|js)(?![^\/?#])
                    pathType: ImplementationSpecific
                    backend:
                      service:
                        name: abc-demo-frontend
                        port:
                          number: 80
                  - path: /
                    pathType: ImplementationSpecific
                    backend:
                      service:
                        name: abc-demo-frontend-external
                        port:
                          number: 80

添加[^\/#?]+\.(?:css|js)(?![^\/?#])路径后,我得到503,为什么?
当我添加下面路径时,我得到503,为什么?

- path: /[^\/#?]+\.(?:css|js)(?![^\/?#])
                        pathType: ImplementationSpecific
                        backend:
                          service:
                            name: abc-demo-frontend
                            port:
                              number: 80
jdzmm42g

jdzmm42g1#

spec.rules.http.paths.path中用于K8s ingress-nginx的正则表达式应符合RE 2引擎语法;看这里。看起来你正在使用的正则表达式不符合RE 2引擎语法。用https://github.com/google/re2/wiki/Syntax中支持的语法检查一下。
因此,您的ingress-nginx pod应该还没有准备好。pod没有准备好应该是导致503 -服务不可用问题的原因。请尝试根据RE 2语法更新Regex,然后再次检查。

相关问题