Google Cloud Kubernetes 节点带宽

Google Cloud Kubernates nodes bandwidth

我正在 Google Cloud Kubernates 服务上部署我的集群。它已经有几个节点。此外,我需要来自 Google Cloud 的带有 GPU 的服务器,以使其与我的集群一起工作。 GPU 实例持续处理传入流量(带宽应达到 1Gb/s)并将结果发送到集群节点(带宽应甚至超过传入带宽)。

项目中对我来说最关键的事情:
1) 集群内这些节点之间的带宽;
2)节点与GPU服务器之间的带宽;
3) GPU服务器与世界之间的带宽;
4) 节点与世界之间的带宽。

每个节点的最小适当带宽为 1 Gb/s 下载和上传。当我进行速度测试时,它显示下载速度 100-680 Mb/s 和上传速度 67-138 Mb/s同一时间的同一节点(下面的屏幕截图是在彼此之间的 30 秒内制作的)。所以目前带宽太小,不稳定。但是我需要从1 Gb/s.

开始的稳定带宽

我试图在 Google 文档中查找有关带宽的任何技术规格或定价。但是,技术规格中只有CPU/GPU/RAM/Disk,没有带宽。而且docs只有流量包月定价。

TL;DR:
如何为每个集群节点、GPU 实例和任何其他 Google 云虚拟机设置稳定 1 Gb/s 或更多带宽? Google云中有没有提供带宽超过1Gb/s的服务? 有没有solution/service在Google云端如何处理互联网大流量?

P.S。速度测试通过以下方式进行:

npx speedo-cli

恐怕您无法在共享基础设施中做出任何带宽承诺。如果你有(很多)现金,在同一个租户上使用单一租户 [1] 和架构的所有部分可以帮助解决外部寄生虫问题。 但在这种情况下,网络带宽没有任何承诺。而且,目前,此解决方案不支持 GPU。

1: https://cloud.google.com/compute/docs/nodes/

确实无法保证,尤其是涉及到 GCP 之外的 to/from 网络的流量时。不过,您可以采取一些措施来最大化带宽:

  1. 增加每个实例的 CPU 个核心数

    caps are dependent on the number of vCPUs that a virtual machine instance has. Each core is subject to a 2 Gbits/second (Gbps) cap for peak performance. Each additional core increases the network cap, up to a theoretical maximum of 16 Gbps for each virtual machine. source

    • 请注意,2 Gbps per vCPU 上限代表使用内部网络的理论限制:

      The cap is a limit that can't be exceeded and doesn't indicate the actual throughput of your egress traffic. There is no guarantee that your traffic will achieve the maximum throughput, which depends on many factors other than the cap. source

  2. 如果 VM 之间存在流量(即您问题中的情况 1 和 2),请确保 VM 位于同一区域并且您重新使用 内部 IP:

    Any time you transfer data or communicate between VMs, you can achieve max performance by always using the internal IP to communicate. In many cases, the difference in speed can be drastic. source

    • 检查 this answer 如何使用 iperf 测量 VM 之间的网络带宽。
  3. 对于高级用例,您可以在 VM 中尝试 fine-tuning the TCP window size

最后,one benchmark 观察到 the GCP network throughput is 81x more variable when compared to AWS。当然,这仅反映了一个基准,但您可能会发现自己测试其他提供商是值得的。

自从 Aleksi 的回答以来,每个 VM 的出口发生了一些变化 cap/throttle。它仍然计算为 2 Gbit/s * NumberOfvCPUs,但现在最大值为 32 Gbit/s(当使用 min_cpu_platform skylake 或更好的 VM 创建时)并且最小值为 10 Gbit/s 对于具有 2 个或更多 vCPU 的虚拟机。

我不清楚您的速度测试的端点是什么,但 TCP 连接吞吐量的(许多)限制之一是:

吞吐量 <= WindowSize / RoundTripTime

人们会期望 GPU 实例和节点彼此靠近,但这一限制可能会影响到 GPU 实例和节点。

除此之外,了解可变吞吐量发生了什么可能需要数据包跟踪,当然是在发送端,最好也在接收端。在这种情况下,每个数据包的前 96 个字节就足够了。这将是支持组织会要求的事情之一。