如何在 kubernetes 节点上拥有多个 IP 地址,然后将特定服务/ pod 源 NAT 到特定 IP 地址?

如何在 kubernetes 节点上拥有多个 IP 地址,然后将特定服务/ pod 源 NAT 到特定 IP 地址?

我有一个设置了多个 IP 地址的 kubernetes 节点(它恰好是一个裸机节点,硬件有多个 NIC,其中一个 NIC 分配了多个 IP 地址 - 但这可能是具有多个虚拟适配器的 VM 节点,或者具有分配给单个适配器的多个 IP 地址的 VM 节点 - 重要的是该节点具有多个 IP 地址)。

当 kubernetes 对来自此节点上运行的特定服务的 IP 通信执行源 NAT 时,它始终从系统上第一个适配器上的第一个 IP 地址进行 SNAT(即,来自任何服务的所有通信似乎都来自连接到系统上第一个适配器的第一个 IP 地址)。

但是,我希望能够让特定的服务(或 pod,如果需要)从其他 IP 地址之一与外界通信。也就是说,我想逐个服务地指定服务从哪个分配给节点的 IP 地址进行 SNAT/通信。

万一我得到的答案是“你不需要这样做”……这个问题的具体原因是我正在访问一个每个 IP 地址都有速率限制的服务,我需要从多个 IP 地址访问才能绕过速率限制。但是这个问题同样适用于让 kubernetes 集群上运行的服务访问受 IP 地址限制的外部服务。

答案1

据我所知,目前有一个解决方案可以解决您的问题,目前仍处于 alpha 阶段,并以自定义资源定义 (CRD) 的形式实现。请参阅kube-静态出口IPgithub 上的项目。

相关内容