【问题标题】:Knative/Kubernetes unique IP for outbound traffic用于出站流量的 Knative/Kubernetes 唯一 IP
【发布时间】:2019-09-15 14:23:40
【问题描述】:

问题:

Knative 是否公开低级网络组件,允许我以这样的方式配置堆栈,即每个实例都有一个可用于出站网络的唯一 IP 地址

信息

我有一个必须在队列事件中发生的工作量。传入事件将开始在 API 上获取。由于速率限制和请求数量(大约 100 个),该过程是长时间运行的并且使用 wait / request / wait / request / wait / .. 。代码 (JS) 的基本作用是,使用队列消息中的参数访问 API 端点,并将 100 个 API 请求的结果与另一个队列一起发送回。

因此,Lamdba 上的无服务器成本很高,而且在 AWS 上,多个实例很可能在同一个 VM 上生成(经过测试),从而导致出站流量使用相同的 IP。因此 Lambda 不是我的选择。

我最近阅读了很多关于 Knative 的文章,我认为 Kubernetes 堆栈提供了更好的可配置性。我需要有我的服务的并发实例,但我需要每个实例有一个唯一的出站 IP。

目前,该解决方案部署在 AWS Beanstalk 上,我根据队列长度对其进行扩展。因此 1 - 10 个实例同时存在并执行 API 请求。我使用微型实例,因为 CPU/../.. 负载非常低。 Beanstalk 存在多个问题,这就是我们想搬家的原因。

我不期望每月有成本优势(IP 很贵,没关系),我只是对 Beanstalk 上的部署不满意。

【问题讨论】:

    标签: kubernetes outbound knative


    【解决方案1】:

    恕我直言,使用 KNative/Kubernetes 可能不是在这里继续的方式。为了获得一些 IP 地址,您将不得不管理大量复杂性。 Beanstalk 看起来就像在公园里散步。

    根据您需要多少 IP,您只需设置几个加载了 IP 地址的 EC2 实例。一个便宜的t3.small 实例可以托管 12 个 IPv4 地址 (ref),您的 JS 代码可以简单地从每个不同的 IP 地址发送请求。 (取决于你的 JS http 客户端,通常有一个 localAddress 选项你可以设置。)

    【讨论】:

    • 项目希望失去对 AWS 的依赖,尤其是 EB。存在需要扩展环境的部署问题。发布后变为 0,然后返回 x - 导致每次发布的停机时间为 15 分钟。在您的示例中,您错过了 IP 地址是如此昂贵,以至于您也可以只启动 12 个微型实例,而无需深入到网络堆栈。我们还研究了 ECS,但它过于专有,所以我们将使用 Kubernetes——因为它似乎是可以以开放方式处理所有项目组件的最低公分母。但是,是的,复杂性.....
    • 好吧,在我的工作中,我们必须配备一支由 高薪 薪水开发/运营人员组成的团队来构建/照看我们不太大的 k8s 集群,即使它们是受管理的”在主要提供商之一的云上”,所以从我的角度来看,在一个实例(或 12 个)上操纵十几个 AWS 弹性 IP 地址相比之下似乎很便宜。在您提供的用例中,缩放到零等问题并不难解决。
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多