【问题标题】:EKS Kubernetes outbound trafficEKS Kubernetes 出站流量
【发布时间】:2021-04-12 01:04:38
【问题描述】:

我最近在 AWS 中为我​​公司的新项目设置了一个 EKS 集群。在我进入我的问题之前,这里是我的设置的一些信息。节点组中有两个节点(目前)具有自动缩放功能。起初,我在私有子网中创建了节点,因为我认为它更安全。但我的主管告诉我,我们需要直接通过 SSH 连接到节点的能力,所以我在公共子网中重新创建了节点,以便我们可以使用公钥 SSH 到节点。

我们在 AWS(例如 aws.example.com)和 DigitalOcean(例如 do.example.com)中有两个 CMS 实例,其中包含一些数据。当 EKS 集群中的容器启动时,其中一些需要使用 url aws.example.com 或 do.example.com 访问 AWS 中的实例。如果 EKS 中的容器无法访问实例,容器仍会运行,但其中的应用程序不会。因此,我需要将两个 CMS 实例上所有 EKS 节点的公共 IP 列入白名单,以便应用程序正常工作。它有效。

我在我的 EKS 集群中使用入口。当我创建入口对象时,AWS 为我创建了一个应用程序负载均衡器。所有入站流量都由 ALB 处理,这很棒。但问题来了。当创建更多容器时,自动缩放会在我的 EKS 集群中启动新节点(每次使用不同的公共 IP),然后我将不得不去两个 CMS 实例将新的公共 IP 地址列入白名单。

那么,有没有什么方法可以让所有节点都使用一个固定的 IP 地址进行出站流量?或者也许将它们配置为将入口创建的 ALB 也用于出站流量?或者我需要创建一个服务器来做到这一点?我现在很迷茫。

这是我尝试过的: 创建集群时,它似乎也创建了一个私有子网,即使我指定了要在公共子网中创建的节点。为私有子网创建了一个 nat-gateway (ngw-xxxxxx),它带有一个弹性 IP(例如 1.2.3.4)。公共子网的路由表如下: 192.168.0.0/16 本地 0.0.0.0/0 igw-xxxxxx

所以我想通过将igw-xxxxxx更改为ngw-xxxxxx,所有出站流量都将使用ngw-xxxxxx并使用IP地址1.2.3.4将流量发送到外界,我只需要将1.2.3.4列入白名单在我的两个 CMS 实例上。但在我应用更改后,所有容器都被终止,所有东西都停止工作。

【问题讨论】:

  • 要使用 NAT,您的节点必须在私有子网中,而不是公共子网中。
  • @Marcin 如果我不想将我的节点移动到私有子网,有没有其他方法可以代替使用 NAT?
  • 遗憾的是,您不能将它们放在公共子网中并使用 nat。

标签: amazon-web-services kubernetes amazon-eks


【解决方案1】:

正如@Marcin 在上面的评论中提到的那样。 您应该将node-group 移至private subnet

私有子网

正如文档所说:

对必须连接到 Internet 的资源使用公共子网,对不会连接到 Internet 的资源使用私有子网

private subnet 的想法是禁止直接从互联网访问内部资源。

您可以在此处阅读 AWS 文档的精彩部分:https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html

对于private subnet,您需要在Route Table 中设置通过Nat gateway 的传出流量(在此处阅读:https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

公共子网

如果您出于某些原因需要public subnet 中的集群,但它是BAD 部分,您可以解决问题:

您可以通过Nat Gateways 将流量从public subnet 仅路由到特定服务器(您的CMS)。

您的public subnet route table 可能如下所示:

Destination Target
10.0.0.0/16 local
W.X.Y.Z/32 nat-gateway-id
0.0.0.0/0 igw-id

W.X.Y.Z/32 是您的 CMS IP 地址。


一些提示

此外,良好的做法是分配 poolEIP 并将它们附加到 NAT Gateway 以确保将来不会更改。

当你想修改基础设施并创建more complicated Nat(例如你想过滤layer 7上的流量)时,你可以创建High Availability Nat instances,并将IP附加到NAT instances而不是NAT Gateways

在这种情况下,您将避免邮寄一些 3-rd 方 API 来将您的新 IP 列入白名单。

【讨论】:

  • 如果在公共子网中使用集群的技巧,是否所有的出站流量都使用 nat-gateway 的 IP 地址而不是节点的 IP 地址?根据我从 AWS 文档中了解到的信息:docs.aws.amazon.com/vpc/latest/userguide/…,nat-gateway 不是已经高度可用了吗?
  • 只有当您连接到您的 CMS W.X.Y.Z 时,它才会使用 Nat Gateway IP。休息时它使用公共 IP,因为流量通过internet gatewaydocs.aws.amazon.com/vpc/latest/userguide/…
猜你喜欢
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2017-09-23
  • 2019-02-28
  • 2020-10-31
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
相关资源
最近更新 更多