【问题标题】:Is it possible to create a GKE Ingress without a default backend?是否可以在没有默认后端的情况下创建 GKE Ingress?
【发布时间】:2020-03-20 13:19:43
【问题描述】:

Ingress documentation 声明:

没有规则的 Ingress 将所有流量发送到单个默认值 后端。默认后端通常是 Ingress 控制器,并且未在您的 Ingress 资源中指定。

如果没有任何主机或路径与 Ingress 中的 HTTP 请求匹配 对象,流量将路由到您的默认后端。

我管理的所有 GKE Ingress 对象都指向特定的后端,例如:

spec:
  rules:
    - host: my.host.com
      http:
        paths:
          - path: /*
            backend:
              serviceName: the service
              servicePort: 1337

是否可以在没有默认后端的情况下创建这些 Ingress 对象? 如果是这样,会有什么后果?

【问题讨论】:

  • 我一直在使用默认后端。我可以请你分享更多关于为什么需要创建这样一个入口的信息吗? :)
  • 好吧,我只是不需要它。目前,我不关心 Ingress 配置未捕获的请求
  • 好的。然后我会提供该信息作为一般答案:-)

标签: google-cloud-platform google-kubernetes-engine kubernetes-ingress


【解决方案1】:

是否可以在没有默认后端的情况下创建这些 Ingress 对象?如果是这样,会有什么后果?

简短的回答是:,如果没有“默认后端”作为最后的手段,您将无法创建 Ingress。默认后端是 Kubernetes 默认行为的一部分。

thread 解释了这种行为。

所有在 Ingress 定义中没有匹配后端的请求都将被转发到“默认后端”(“请求 - 响应”逻辑,没有孤立的请求)。

我们可以看到:cluster/addons/cluster-loadbalancing/glbc/default-svc-controller.yaml

说:

    # Any image is permissible as long as:
    # 1. It serves a 404 page at /
    # 2. It serves 200 on a /healthz endpoint
    image: k8s.gcr.io/ingress-gce-404-server-with-metrics-amd64:v1.6.0

这就是为什么您可以为kube-system/l7-default-backend 部署放置自己的自定义映像。

您可以在以下位置找到更多详细信息:

  • cluster/gce/manifests/glbc.manifest
  • cluster/addons/cluster-loadbalancing/glbc/default-svc.yaml

文件。

希望这些信息能够阐明为什么会有 default backend 以及它是如何工作的。

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多