首页 > 解决方案 > EKS + NLB:`service.beta.kubernetes.io/aws-load-balancer-internal: true` 不适用于`service.beta.kubernetes.io/aws-load-balancer-type: nlb`

问题描述

我有一个 EKS Kubernetes 1.16.x。具有三个标记为的公共子网kubernetes.io/role/elb: 1和三个标记为的私有子网的集群kubernetes.io/role/internal-elb: 1

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

我正在关注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注释,一切似乎都可以完美运行,并且完全符合我的预期。我得到一个仅托管在三个公共子网上的公共 NLB。我可以通过带有aws elbv2 describe-load-balancers, with "Scheme": "internet-facing",的 AWS cli 看到这一点"Type": "network",

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

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

标签: amazon-elbamazon-eksnlbinternal-load-balancer

解决方案


true需要在 yaml 中引用"true"

这有效:

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

这会导致我遇到的错误:

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

推荐阅读