amazon-vpc - AWS EKS - 如何解决由 NLB 规则导致的 RulesPerSecurityGroupLimitExceeded
问题描述
我有带有三个私有子网(10.176.128.0/20、10.176.144.0/20、10.176.160.0/20)和三个公共子网(10.176.0.0/20、10.176.16.0/20、10.176.32.0/20)的 av VPC . 所有私有子网都有标签 kubernetes.io/role/internal-elb=1,公共子网有标签 kubernetes.io/role/elb=1。
我在托管节点组中运行所有工作节点,AWS eks 负责为集群创建默认安全组。那个安全组就是我稍后要提到的。
我的 kubernetes 集群中有两个命名空间,test 和 stage,在每个命名空间中我有 3 个带有负载均衡器的服务,它们在每个命名空间中公开 8 个端口。负载均衡器的类型为 nlb。
现在问题来了,每个带有负载均衡器的服务在我的节点的安全组中为每个端口创建 4 个规则,一个用于它所在的每个子网,一个用于所有流量 (0.0.0.0/0)。8 * 4 * 2 = 64,根据 AWS,每个安全组的最大规则数为 60,因此当我要创建最后一个 LB 时,我收到有关 RulesPerSecurityGroupLimitExceeded 的错误。
正如我所看到的,有两种方法可以解决这个问题,或者将更多的安全组附加到我的节点上,或者以某种方式进行配置,这样每个端口创建的规则就会更少。事实是,实际上一条规则就足够了,因为 0.0.0.0/0 也将允许我的所有子网。另一种选择可能是我在设计中做错了什么。添加更多我尝试过但失败的安全组的第一个选项仍然尝试将规则添加到已经满的安全组。
解决方案
我们也在解决这个问题。您可以做的一件事是在 AWS 控制台中请求增加每个安全组的规则配额。我觉得那样只会稍微推迟这个问题。
推荐阅读
- python - KeyError 为什么会发生这种情况我所有的键都存在(python)?
- ios - 可通过继承编码
- sql - 如果它只返回returntype,那么plsql函数究竟返回了什么
- javascript - 发送二维文件数组的问题
- c# - Linq - 按包含顺序排列
- r - 将变量名称从 1 到 20 粘贴在一起,但没有 20
- python - 使用 Python 脚本对 Auth0 进行身份验证时出现 400 HTTPError
- java - 如何使用 Http 而不是默认的 gRPC 进行谷歌监控 API
- ruby-on-rails - reverse_merge 返回哈希而不是子类。这是一个错误还是有意的?
- python - 如何从 PYTHONPATH 导入名称不明确的模块?