在EKS服务中创建网络负载均衡器的注释

0

【以下的问题经过翻译处理】 我正在尝试使用LoadBalancer服务类型来公开我的Kubernetes资源。因此,我之前部署了AWS负载均衡控制器。现在,当我创建一个LoadBalancer服务时,我在AWS中看到一个网络负载均衡器被创建,这很好。但是在https://docs.aws.amazon.com/eks/latest/userguide/network-load-balancing.html#network-load-balancer 上查看文档时,它提到了向服务资源添加以下注释。

service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance"

现在,这对我来说似乎有些多余,因为我已经有了一个带有实例目标的网络负载均衡器,而不需要向k8s服务添加任何注释。因此,我感到困惑。上面的注释值只是默认值吗?我必须强制提供这些注释吗?

编辑:我可以从https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/service/annotations/#annotations中看到,service.beta.kubernetes.io/aws-load-balancer-nlb-target-type的默认值是instance,但service.beta.kubernetes.io/aws-load-balancer-type没有默认值。因此,这回答了我问题的一部分。

1 Antwort
0

【以下的回答经过翻译处理】 为了回答你的问题,让我们来看一下为什么注释service.beta.kubernetes.io/aws-load-balancer-type: external会出现。

基本上有两个主要的Kubernetes控制器可用于管理AWS负载均衡实例:

遗留的Kubernetes "Cloud Controller Manager",即AWS云提供商负载均衡控制器 新的推荐的 "AWS Load Balancer Controller"。 遗留的控制器直到最近才将其代码放入Kubernetes存储库,但我可以看到这个提交,似乎已经删除了它(看起来它正在v1.28.0-alpha.0版本中打包)。

遗留的控制器默认情况下会创建经典负载均衡器,然后后来也加强了对网络负载均衡器的支持。为了支持更多的自定义,推荐的新的 "AWS Load Balancer Controller" 被引入。

虽然遗留的云控制器管理器和AWS负载均衡控制器在集群中一直在一起工作,但注释service.beta.kubernetes.io/aws-load-balancer-type: external是必需的。如果注释的值设置为external,负载均衡器将由新的 "AWS Load Balancer Controller" 创建。

因此,如果没有使用注释service.beta.kubernetes.io/aws-load-balancer-type: external,并使用其他适当的注释,仍然会为您创建网络负载均衡器,但将使用遗留的AWS云提供商负载均衡控制器,而不是推荐的 "AWS Load Balancer Controller"。您将面临的问题是,遗留的提供程序处于弃用模式,因此将不会收到任何新功能,并且将被完全移除。

希望这能回答你的问题。

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen