首页 > 解决方案 > 用于出站流量的 Knative/Kubernetes 唯一 IP

问题描述

问题:

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 上的部署不满意。

标签: kubernetesoutboundknative

解决方案


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

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


推荐阅读