【问题标题】:Kubernetes (on GKE) external connection through NAT for specific kube services?Kubernetes(在 GKE 上)通过 NAT 进行特定 kube 服务的外部连接?
【发布时间】:2018-09-18 05:33:46
【问题描述】:

我目前在 GKE 上有两个集群 - 一个在 eu-west1-b,另一个在 us-east1-b。部署到这些集群中节点的 pod 需要发出基于位置的请求(用于延迟测试目的)。

我还需要连接到我在 RDS 上的 postgres 实例,它使用基于 IP 的白名单进行外部连接。我集群中的节点具有临时 IP,因此我无法使用它们。

我进行了大量研究,阅读了大量 SO 答案、文档和教程,并得出通过 NAT 路由流量几乎是目前在 GKE 上执行此操作的最佳/唯一方法的解决方案。

https://serverfault.com/questions/835425/kubernetes-external-connection-through-single-ip

与上述问题类似,我不想通过 NAT 路由我的所有流量。我的原因是因为我需要来自与当前节点关联的 Internet 网关的请求,因此它来自特定区域。

上面的问题有一些答案几乎可以让我到达那里,但不包括任何特定于 kube 的配置。这是一个很棒的教程:

https://docs.tenable.com/pvs/deployment/Content/GoogleCloudInstructionsNatGateway.htm

但同样,不是基于 kube。

我的想法是我需要在我的 kube 集群中为 postgres 定义一个服务,然后告诉它通过 NAT 路由到外部服务。不完全确定从哪里开始,希望得到帮助。

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    解决方案:

    1. Tag您的实例在不同的可用区/区域中具有不同的标签

    2. 为每个区域/区域创建静态 IP 地址

    3. 使用上面的外部地址创建 NAT 出口节点(GCE 实例或实例组)

    4. 通过每个 NAT 出口节点创建一个route。使用 RDS 入口 IP/32 的目标 IP 范围和步骤 1 中的网络标签限制每条路由(以便实例使用正确的网关)

    【讨论】:

    • 我想我明白了,谢谢.. 但是..“使用上面的外部地址创建 NAT 出口节点(GCE 实例或实例组)”。所以我需要每个区域的计算实例吗?我正在努力降低成本,如果有的话。我不介意一个额外的实例来路由特定于服务的出口,但我负担不起每个区域的额外实例。不过,也许我错过了什么。
    • 恐怕你没有遗漏任何东西。在您的问题中,您说“我的原因是因为我需要来自与当前节点关联的互联网网关的请求,因此它来自特定区域。”要获得不同区域的不同地址,您需要多个出口节点。即使不是这种情况,您仍然需要每个区域一个,否则您最终会为您的出口支付区域间流量。我想如果你真的需要节省的话,你可以为每个区域创建一个实例来执行双重任务(GKE 中的节点和 NAT 退出)。这是可行的,但并不理想。
    • "要为不同的区域获取不同的地址,您需要多个出口节点。即使不是这种情况,您仍然需要每个区域一个,否则您最终需要为您的区域间流量付费出口“
    • 阅读network pricing
    • 干杯。我已经阅读了几次,但它太令人困惑,无法估计实际成本。我将只运行一个工作负载,看看它会产生什么成本。最坏的情况是,我将转移到一组没有此类带宽成本的 VPS。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2021-08-24
    • 2021-01-09
    • 2021-12-24
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多