Networking 通过EKS与IP白名单服务通信

Networking 通过EKS与IP白名单服务通信,networking,kubernetes,amazon-eks,Networking,Kubernetes,Amazon Eks,我已经使用所有默认设置使用eksctl设置了一个EKS集群,现在需要与使用IP白名单的外部服务通信。显然,从我的集群向服务发出的请求来自发出请求的任何节点,但是节点列表(及其IP)可以而且将经常更改,因此我无法向白名单提供单个IP地址。在研究这个问题之后,我发现我需要使用NAT网关 我在让它工作时遇到了一些问题,我尝试将AWS_VPC_K8S_CNI_EXTERNALSNAT设置为true,但是这样做会阻止集群上的所有传出流量,我假设是因为返回数据包不知道去哪里,所以我从未得到响应。我试过摆弄路

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

我在让它工作时遇到了一些问题,我尝试将AWS_VPC_K8S_CNI_EXTERNALSNAT设置为true,但是这样做会阻止集群上的所有传出流量,我假设是因为返回数据包不知道去哪里,所以我从未得到响应。我试过摆弄路线表,但没用

非常感谢您提供的任何帮助。

您可以在专有网络中创建公共子网和私有子网


然后在公共子网中创建NAT网关。还可以运行专用子网中的所有EKS节点。K8S中的POD将使用NAT网关访问互联网服务。

需要这样做,我发现
eksctl
工具具有标志
--节点专用网络
,通过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

在重新配置我的自动缩放组以在私有子网(而不是公共子网)上创建节点后,我现在可以看到传出请求实际上来自NAT网关IP,这是正确的,但是这样做时,我的应用程序不再可以从web访问。我在这里的最终目标是让我的可公开访问的web应用程序对某个IP地址发出请求,请求总是来自某个IP地址IP@JazzyP使用入口公开K8S clusterfalse alarm中的服务,即使节点位于专用子网上,也可以通过ELB公开访问,因此,看起来只要将节点移动到专用子网就可以对其进行排序,谢谢!