【问题标题】:Communicating with a IP whitelisted service with EKS使用 EKS 与 IP 白名单服务通信
【发布时间】:2019-11-20 07:17:36
【问题描述】:

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: networking kubernetes amazon-eks


    【解决方案1】:

    您可以关注this guide,在您的 VPC 中创建公有子网和私有子网。

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

    【讨论】:

    • 在重新配置我的 Auto Scaling 组以在私有子网上而不是公共子网上创建节点后,我现在可以看到传出请求实际上来自 NAT 网关 IP,这是正确的,但是这样做我的应用程序不再可以从 Web 访问。我的最终目标是让我的可公开访问的 Web 应用程序向某个 IP 地址发出请求总是来自一个 IP
    • @JazzyP 使用 Ingress 公开 K8S 集群中的服务
    • 误报,即使节点位于私有子网中,它实际上似乎也可以通过 ELB 公开访问,因此看起来只需将节点移动到私有子网就可以对其进行排序,谢谢!
    【解决方案2】:

    需要做同样的事情,我发现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
    

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2022-08-16
      • 2019-08-25
      • 2023-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      相关资源
      最近更新 更多