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

问题描述

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

enter image description here

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

为此要设计什么主意,以便团队可以根据需要创建尽可能多的带有端口的NLB服务?

解决方法

EKS documentation 说明了这一点。

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

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

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

  • 使用 Ingress 而不是 LoadBalancer 类型的 Service 来发送 您的服务的流量。 AWS 应用程序负载均衡器 (ALB) 需要比 NLB 更少的规则。 ALB 也可以跨 多个入口。有关更多信息,请参阅应用程序负载 在 Amazon EKS 上进行平衡。

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...