本文介绍了是否必须为入口(GCE)提供defaultBackend?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果省略defaultBackend部分,GKE上的Inress似乎返回503,但是我找不到任何支持它的文档。但是一旦我删除它,该入口上的所有服务都会返回503 Server Error

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  #defaultBackend:
  #  service:
  #    name: test-nginx
  #    port:
  #      number: 80
  rules:
    - host: test.example.com
      http:
        paths:
            - path: /*
              pathType: ImplementationSpecific
              backend:
                service:
                  name: test-nginx
                  port:
                    number: 80
    - host: test2.example.com
      http:
        paths:
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: test2
                port:
                  number: 80

推荐答案

我想帮助您解决有关defaultBackend和您描述中提到的行为的问题。

definitiondefaultBackend通常在入口控制器中配置defaultBackend,以服务于与spec中的path不匹配的任何请求。

没有规则的Inress将所有流量发送到单个默认后端。defaultBackend通常是入口控制器的配置选项,未在入口资源中指定。

如果没有主机或路径与Inress对象中的HTTP请求匹配,则通信将路由到您的默认后端。

由于没有主机或路径与HTTP请求匹配,它会在您删除defaultBackend时尝试访问defaultBackend,请求会向您发送错误503。

如果要避免使用defaultBackend,请确保HTTP请求与主机或路径匹配

如果您想了解有关此主题的更多信息,我想与您分享参考资料Kubernetes Documentation > Concepts > Services, Load Balancing, and Networking > Ingress

在本参考中有一些有关如何在defaultBackend

情况下配置入口示例

旅途愉快。

这篇关于是否必须为入口(GCE)提供defaultBackend?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-21 04:23