使用 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
我已经使用所有默认设置使用 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