Kubernetes与HPC:(1)RDMA网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes与HPC:(1)RDMA网络相关的知识,希望对你有一定的参考价值。
参考技术A 介绍RDMA网络实现之前,先介绍一下常见的几种网络环境:以太网(ethernet)、IB网(Infiniband)、光纤通道(Fibre Channel)。以太网设计的初衷是为了实现不同系统的互联,是一种network,优先考虑交融性与分布式;IB主要解决的问题是在一个系统内部把多个设备整合起来,像一台设备一样工作,优先考虑的是高速与低延迟。
目前,大致有三类RDMA网络,分别是Infiniband、RoCE、iWARP。其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 , 而RoCE 和 iWARP都是基于以太网的RDMA技术,支持相应的verbs接口。
从图中不难发现,RoCE协议存在RoCEv1和RoCEv2两个版本,主要区别RoCEv1是基于以太网链路层实现的RDMA协议(交换机需要支持PFC等流控技术,在物理层保证可靠传输),而RoCEv2是以太网TCP/IP协议中UDP层实现。从性能上,很明显Infiniband网络最好,但网卡和交换机是价格也很高,然而RoCEv2和iWARP仅需使用特殊的网卡就可以了,价格也相对便宜很多。
RDMA这种技术以前只能运行在IB网络下,为了将这种技术用在以太网环境下,就逐步发展出了RoCE/iWarp两种协议。
目前来看RoCE比iWarp前景更好,实际使用也更广泛。
DPDK是Intel主导,提供了基于用户态的数据链路层的功能,可以在上面构建出基于用户态的网络栈。
更多细致的差异对比,可以参考 此文
发展出DPDK/RDMA以及多种实现,根本原因在于网络硬件发展很快,而占据主导的TCP协议当初是为了低速网络环境设计的。
要在Kubernetes中使用rdma设备,首先是通过device plugin插件机制,让k8s能够识别和使用rdma设备。其次,rdma网卡基本上都支持SR-IOV技术,利用基于该技术的Kubernetes CNI插件,可以构建出完整的容器网络。
当前支持RDMA的网卡主要是intel与mellanox两个厂家,各自均提供有对应k8s device plugin与SR-IOV网络cni插件。
https://github.com/intel/sriov-network-device-plugin
https://github.com/intel/sriov-cni
https://github.com/Mellanox/k8s-rdma-sriov-dev-plugin
https://github.com/Mellanox/sriov-cni
在HPC场景下,pod之间除了高性能网络之外,也可以有额外的网络,由此引入pod多网卡诉求,intel提供了一种解决方案multus( https://github.com/intel/multus-cni ),该插件主要通过代理其它cni插件以实现,遵循k8s多网卡规范( https://github.com/K8sNetworkPlumbingWG/multi-net-spec )。
利用multus插件,结合常规cni插件与SR-IOV cni插件,即可实现下图所示的pod网络
A Hacker’s Guide to Kubernetes Networking
以上是关于Kubernetes与HPC:(1)RDMA网络的主要内容,如果未能解决你的问题,请参考以下文章