使用 EKS 与 IP 白名单服务通信

Communicating with a IP whitelisted service with EKS

我已经使用所有默认设置使用 eksctl 设置了 EKS 集群,现在需要与使用 IP 白名单的外部服务通信。显然,从我的集群向服务发出的请求来自发出请求的任何节点,但是节点列表(及其 ips)可以而且将会经常更改,因此我无法为它们提供单个 IP 地址以列入白名单。在查看之后我发现我需要使用 NAT 网关。

我在让它工作时遇到了一些麻烦,我尝试将 AWS_VPC_K8S_CNI_EXTERNALSNAT 设置为 true 但是这样做会阻止我的集群上的所有传出流量,我假设是因为 return 数据包不知道去哪里,所以我永远得不到回应。我试过使用路由表无济于事。

非常感谢任何帮助。

您可以按照 this guide 在您的 VPC 中创建 public 个子网和私有子网。

然后在 public 个子网中创建 NAT 网关。此外 运行 私有子网中的所有 EKS 节点。 K8S中的pods将使用NAT网关访问互联网服务。

需要做同样的事情,我发现 eksctl 工具有标志 --node-private-networking,它通过 NAT 进行所有通信,因此 IP 对所有外部调用保持不变。

eksctl create cluster \
    --name production \
    --version 1.14 \
    --nodegroup-name kube-workers \
    --node-type t3.medium \
    --nodes 3 \
    --nodes-min 1 \
    --nodes-max 5 \
    --node-ami auto \
    --node-private-networking \
    --ssh-access