Z.S.K.'s Records

Kubernetes学习(k8s基于InfiniBand实现HPC高性能容器网络组网方案实践一)

在HPC场景下,底层网络的性能直接影响最终的结果,HPC往往会伴随海量的数据交换,特别是在跨Node之间,10Gb的以太网网络传输肯定要比100Gb的IB网络传输慢,本人所负责的训练平台也是如此,在一次训练过程中,GPU存在海量数据交换,虽然是在GPU之间,但本质还是通过网络进行传输,但是以太网的传输在HPC场景下往往显得不那么高效,因此可以通过RDMA或者如果预算够的话,通过硬件IB实现数据交换,能大大提高训练质量

本人所负责的训练平台是完全基于k8s的,现在要迁移至IB网络同时不影响现有业务进行,大大增加了实施难度,在经过一番调研之后,最终的方案为在原有的容器网络基础之上,再加一层IB网络层,即在k8s集群中同时存在2个网络,这在k8s是完全支持的,即在容器中除了eth0,由flannel cni分配, 还会有一个net1网络,由IB cni分配, eth0的网络用于集群之间的通信,而net1则用于训练时pod与pod节点进行通信,在实践之前先介绍几个比较重要的技术

Infinitband

infinitband做专门为高带宽,低时延,高可靠,不占用cpu资源的网络互联技术,大量被用于超算、AI等HPC场景下

这里不对infintband展开细说,感兴趣的可以参考下列连接

https://zhuanlan.zhihu.com/p/74238082

https://zhuanlan.zhihu.com/p/163104439

https://blog.csdn.net/swingwang/article/details/72935461

sr-iov

SR-IOV (Single Root Input/Output Virtualization) 的主要作用是将一个物理设备模拟成多个虚拟设备,在虚拟化技术中使用非常频繁,

sr-iov需要硬件上的支持,好在目前大部分服务器都支持了该技术,这里也不过多介绍其中的细节,后续用到的两个比较重要的概念:

SR-IOV引入了两种新的PCIe的Function:

  1. PFs:完整功能的PCIe Function包含了SR-IOV Extended Capability。这个Capability被用来配置和管理SR-IOV的功能。
  2. VFs:一部分轻量级的PCIe function,只包含必要的用于数据移动的最小可配置的资源。

一个 具备SR-IOV能力的设备可以被配置成被枚举出多个Virtual Functions(数量可控制),而且每个Funciton 都有自己的完整有BAR的配置空间。每个VF 分配给虚拟或者容器

https://zhuanlan.zhihu.com/p/347204232

https://blog.csdn.net/wangdd_199326/article/details/90476728

资源清单

下列的资源清单为部分集群资源且机器ip不为真实ip

机器 角色 以太网/IB网卡 内核/发行版
10.4.52.2 k8s master/v1.15.5 Y/N Linux-4.19 centos7.4
10.4.52.3 k8s master/v1.15.5 Y/N Linux-4.19 centos7.4
10.4.52.4 k8s master/v1.15.5 Y/N Linux-4.19 centos7.4
10.4.52.5 k8s node/v1.15.5 Y/Y,一个ib网口 Linux-4.19 centos7.4
10.4.52.6 k8s node/v1.15.5 Y/Y,一个ib网口 Linux-4.19 centos7.4
10.4.52.7 k8s node/v1.15.5 Y/Y,一个ib网口 Linux-4.19 centos7.4

master做为控制面,用于集群间的管理角色

node上做为数据面,以太网用于与控制面进行交互,同时IB网卡用于HPC业务

组网图

在集群物理机器上,实际存在3个网络:

  1. 管理网(eth1), 用于机器的管控网,一般叫做ipmi或者带外、外带等,在服务器上有专门的网口标识
  2. 业务网(eth0), 用于flannel的启动参数指定的网卡名,这个网络在pod中用于与k8s控制面进行交互
  3. IB网(eth100), 用于ib网卡,在这个网卡上会通过sriov虚拟出若干网卡用于pod中

架构图

实现目的

最终要实现的目标为: 通过sriov在IB网卡上实现高性能容器网络以加速分布式训练的GPU数据交换

参考文章:

转载请注明出处https://izsk.me

Z.S.K. wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?