EKS + NLB:`service.beta.kubernetes.io/aws-load-balancer-internal: true` 不适用于 `service.beta.kubernetes.io/aws-load-balancer-type: nlb`

EKS + NLB: `service.beta.kubernetes.io/aws-load-balancer-internal: true` not working with `service.beta.kubernetes.io/aws-load-balancer-type: nlb`

我有一个 EKS Kubernetes 1.16.x。包含三个标记为 kubernetes.io/role/elb: 1 的 public 子网和三个标记为 kubernetes.io/role/internal-elb: 1

的私有子网的集群

我正在尝试创建内部 NLB LoadBalancer 服务。在内部,我希望它托管在三个私有子网上,而不是三个 public 子网上。

我正在关注 https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html

上的文档
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-internal: true
  name: grafana-nlb
  namespace: prometheus
spec:
  ports:
    - name: service
      port: 80
      protocol: TCP
      targetPort: 3000
  selector:
    app.kubernetes.io/instance: prom
    app.kubernetes.io/name: grafana
  type: LoadBalancer

如果我省略 service.beta.kubernetes.io/aws-load-balancer-internal: true 注释,一切似乎都能完美运行并产生我所期望的结果。我得到了一个仅托管在三个 public 子网上的 public NLB。我可以通过 aws elbv2 describe-load-balancers"Scheme": "internet-facing""Type": "network",.

通过 AWS cli 看到这一点

如果使用 service.beta.kubernetes.io/aws-load-balancer-internal: true 注释创建它,我将得到一个经典的 ELB 而不是 NLB,它仍然是 public。它有 "Scheme": "internet-facing" 并且仅托管在三个 public 子网上。使用 CLI,我可以看到 aws elb describe-load-balancers 的负载均衡器,但 aws elbv2 describe-load-balancers

看不到

这似乎是错误的行为。关于如何进行故障排除或继续操作的任何提示?

true需要在yaml中引用为"true"

这个有效:

    service.beta.kubernetes.io/aws-load-balancer-internal: "true"

这导致了我遇到的错误:

    service.beta.kubernetes.io/aws-load-balancer-internal: true