• 注册
    • 查看作者
    • 使用自定义 Ingress 控制器

      在启用了 HttpLoadBalancing 插件的情况下使用自定义 Ingress 控制器

      您可以通过停用 HttpLoadBalancing 插件来运行自定义 Ingress 控制器,例如 nginx-ingress。这可以防止 GKE Ingress 控制器处理 Ingress 资源。

      如果您想运行启用了 HttpLoadBalancing 插件的自定义 Ingress 控制器,例如使用子集和 Private Service Connect 等功能,您可以使用以下方法之一:

      在 Ingress 清单中,设置 kubernetes.io/ingress.class 注释。运行所有 GKE 版本的集群都支持此配置。

      配置 ingressClassName 字段。

      配置默认 Ingress 类

      您必须确保 spec.ingressClassName 不会被任何进程意外覆盖。将 spec.IngressClassName 从有效值更改为空字符串 ("") 的更新操作会促使 GKE Ingress 控制器处理 Ingress。

      配置 ingressClassName 字段

      您可以通过在 Ingress 清单中设置 ingressClassName 字段来使用自定义 Ingress 控制器。以下清单描述了一个用于指定 nginx Ingress 控制器的 Ingress:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
       name: cafe-ingress
      spec:
       ingressClassName: nginx
       tls:
       - hosts:
         - cafe.example.com
         secretName: cafe-secret
       rules:
       - host: cafe.example.com

      注意:如果 Ingress 具有空的 spec.ingressClassName 或 spec.ingressClassName 不存在,并且 Ingress 没有注释 kubernetes.io/ingress.class,则 GKE Ingress 控制器会处理 Ingress。

      此配置适用于 GKE 1.18 至 1.21 版中的 Ingress v1beta1 API 以及 GKE 1.19 及更高版本中的 Ingress v1 API。

      配置默认 Ingress 类

      如需为集群中的所有 Ingress 资源配置默认 Ingress 类,您可以创建 IngressClass 资源,并将注释 ingressclass.kubernetes.io/is-default-class 设置为 true:

      apiVersion: networking.k8s.io/v1
      kind: IngressClass
      metadata:
      name: nginx-public
      annotations:
        ingressclass.kubernetes.io/is-default-class: "true"
      spec:
      controller: k8s.io/ingress-nginx

      注意:准入控制器填充集群中新 Ingress 资源的 spec.ingressClassName 字段,但不会修改现有 Ingress 资源。

      此配置适用于运行 GKE 1.19 及更高版本的集群。

      GKE Ingress 控制器行为摘要

      对于运行 GKE 1.18 及更高版本的集群,GKE Ingress 控制器是否处理 Ingress 取决于 Ingress 清单中 kubernetes.io/ingress.class 注释和 ingressClassName 字段的值:

      kubernetes.io/ingress.class 值 ingressClassName 值 Ingress 控制器行为
      未设置 未设置 处理 Ingress
      gce 或 gce-internal 任意值 处理 Ingress
      设置为 gce 或 gce-internal 以外的值 任意值 不处理 Ingress
      未设置 任意值 不处理 Ingress

      对于运行旧版 GKE 的集群,GKE 控制器会处理任何没有注释 kubernetes.io/ingress.class 或具有值为 gce 或 gce-internal 的注释的 Ingress。

    • 0
    • 0
    • 0
    • 907
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 单栏布局 侧栏位置: