Kubernetes AWS NLB 服务创建过多的安全组规则

How*_*ark 6 nlb kubernetes kubernetes-service amazon-eks

Kubernetes服务文档显示了以下有关如何为每个 NLB 服务更新节点安全组的说明。

在此输入图像描述

不幸的是,我的 VPC 有 3 个不同的 CIDR。这意味着对于服务上的每个端口,节点的安全组中都会添加 4 条新规则。有一个团队拥有带有 5 个端口的 NLB 服务,这意味着它会向节点的安全组添加 20 条新规则。其他团队通常有 2 个端口,这会导致节点安全组中添加 8 条规则。最终结果是我们有时会达到一个安全组允许的最大数量 64 条规则。

围绕此进行设计的想法是什么,以便团队可以根据需要创建具有任意数量端口的 NLB 服务?

Jua*_*chi 5

EKS 文档对此做了一些说明。

对于您创建的每个 NLB,Amazon EKS 会向节点的安全组添加一项用于客户端流量的入站规则,并为 VPC 中的每个负载均衡器子网添加一项用于运行状况检查的规则。如果 Amazon EKS 尝试创建超出安全组允许的最大规则数配额的规则,则 LoadBalancer 类型的服务部署可能会失败。有关更多信息,请参阅 Amazon VPC 用户指南中的 Amazon VPC 配额中的安全组。请考虑以下选项,以最大程度地减少超出安全组规则最大数量的可能性。

  • 请求增加每个安全组的规则配额。有关更多信息,请参阅《服务配额用户指南》中的请求增加配额。

  • 使用创建网络负载均衡器,而不是实例目标。对于 IP 目标,可以为相同的目标端口共享规则。可以使用注释手动指定负载均衡器子网。有关更多信息,请参阅 GitHub 上的注释。

  • 使用 Ingress 而不是 LoadBalancer 类型的服务将流量发送到您的服务。AWS Application Load Balancer (ALB) 需要的规则比 NLB 少。ALB 还可以在多个 Ingress 之间共享。有关更多信息,请参阅 Amazon EKS 上的应用程序负载平衡。

  • 将集群部署到多个帐户。

如果这些选项都不适合您,并且您还有 ALB,则可以最小化这些 ALB 的规则,强制它们使用特定的安全组,而不是将其规则添加到节点的安全组中。注释是service.beta.kubernetes.io/aws-load-balancer-security-groups. 这样做,您可以将多个规则替换为一个规则,从而为 NLB 规则留出更多空间。

  • 当然,我想,无论如何,如果有人错过了文档,那将会有所帮助。我刚刚在列表中添加了一个额外的解决方法。 (2认同)