带有 AWS 应用程序负载均衡器的 Knative/Istio

问题描述

我对 Knative 服务、Istio 和 AWS 应用程序负载均衡器(从现在开始为 ALB)之间的交互有疑问。

我正在使用 YAML 清单(而不是 kn 控制台)部署 Knative Serving v0.20,并使用 Helm 图表部署 Istio。此外,我一直在遵循一些在线指南(herehere)让 Istio 使用 ALB 而不是创建 ELB。根据他们的说法,让 Istio 使用 ALB 所需的主要配置更改是 gateways.istio-ingressgateway.type=NodePort。这一变化使得 Istio 不会创建它的负载均衡器。

但是,我注意到,当 Istio 不创建负载均衡器时,Kubernetes 不会让我删除以下 Knative 入口:

kind: Ingress
apiVersion: networking.internal.knative.dev/v1alpha1
Metadata:
  annotations:
    networking.knative.dev/ingress.class: istio.ingress.networking.knative.dev
  creationTimestamp: '2021-03-09T12:52:30Z'
  deletionGracePeriodSeconds: 0
  deletionTimestamp: '2021-03-09T13:13:30Z'
  finalizers:
    - ingresses.networking.internal.knative.dev
  generateName: default-domain-
  generation: 2
  managedFields:
    - apiVersion: networking.internal.knative.dev/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:Metadata':
          'f:annotations':
            .: {}
            'f:networking.knative.dev/ingress.class': {}
          'f:generateName': {}
        'f:spec':
          .: {}
          'f:rules': {}
      manager: default-domain
      operation: Update
      time: '2021-03-09T12:52:30Z'
    - apiVersion: networking.internal.knative.dev/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        'f:Metadata':
          'f:finalizers':
            .: {}
            'v:"ingresses.networking.internal.knative.dev"': {}
        'f:status':
          .: {}
          'f:conditions': {}
          'f:observedGeneration': {}
          'f:privateLoadBalancer':
            .: {}
            'f:ingress': {}
          'f:publicLoadBalancer':
            .: {}
            'f:ingress': {}
      manager: controller
      operation: Update
      time: '2021-03-09T12:52:43Z'
  name: default-domain-fq97m
  namespace: knative-serving
  resourceVersion: '48071'
  selfLink: >-
    /apis/networking.internal.knative.dev/v1alpha1/namespaces/knative-serving/ingresses/default-domain-fq97m
  uid: 84323bd8-018d-4d30-b933-91ebba604811
spec:
  rules:
    - hosts:
        - default-domain-tn6xq.default-domain.invalid
      http:
        paths:
          - splits:
              - percent: 100
                serviceName: default-domain-service
                serviceNamespace: knative-serving
                servicePort: 80
      visibility: ExternalIP
status:
  conditions:
    - lastTransitionTime: '2021-03-09T12:52:43Z'
      status: 'True'
      type: LoadBalancerReady
    - lastTransitionTime: '2021-03-09T12:52:30Z'
      status: 'True'
      type: NetworkConfigured
    - lastTransitionTime: '2021-03-09T12:52:43Z'
      status: 'True'
      type: Ready
  observedGeneration: 1
  privateLoadBalancer:
    ingress:
      - domainInternal: knative-local-gateway.istio-system.svc.cluster.local
  publicLoadBalancer:
    ingress:
      - domainInternal: istio-ingressgateway.istio-system.svc.cluster.local

我认为主要原因是 finalizers 部分。事实上,如果我修改集群中的资源,替换

finalizers:
  - ingresses.networking.internal.knative.dev

使用 finalizers: [] 然后 Kubernetes 让我可以销毁它。

我在文档和网上搜索了解释,但没有找到。一开始,我以为我搞砸了 AWS ALB 控制器,所以我尝试在不创建任何 ALB 的情况下更改 Istio 的配置,但问题并没有消失。

您知道 Ingress 的用途吗?我该如何解决(或至少解决)这个问题?也欢迎提供指向相关讨论/示例/文档的指针!

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)