在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没有默认值。因此,这回答了我问题的一部分。

profile picture
专家
已提问 5 个月前30 查看次数
1 回答
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
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则