我已经使用所有默认设置使用eksctl设置了EKS集群,现在需要与使用IP白名单的外部服务进行通信。显然,从我的集群向服务发出的请求来自发出请求的任何节点,但是节点(及其IP)的列表可以并且将经常更改,因此我无法为它们提供单个IP地址以将其列入白名单。经过研究,我发现我需要使用NAT网关。
我在使它无法正常工作时遇到了一些麻烦,我尝试将AWS_VPC_K8S_CNI_EXTERNALSNAT设置为true,但是这样做会阻止群集上的所有传出流量,我认为这是因为返回数据包不知道要去哪里,所以我从未得到响应。我试过玩路由表无济于事。
非常感谢您的协助。
答案 0 :(得分:3)
您可以按照this guide在VPC中创建公用子网和专用子网。
然后在公共子网中创建NAT网关。还要在专用子网中运行所有EKS节点。 K8S中的Pod将使用NAT网关访问互联网服务。
答案 1 :(得分:0)
需要这样做,我发现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