千家信息网

Kubernets中如何使用RDMA

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,今天就跟大家聊聊有关Kubernets中如何使用RDMA,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。RDMARDMA(全称RemoteDir
千家信息网最后更新 2025年02月03日Kubernets中如何使用RDMA

今天就跟大家聊聊有关Kubernets中如何使用RDMA,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

RDMA

RDMA(全称RemoteDirect Memory Access) 它为了解决网络传输中服务器端数据处理的延迟而产生。

它的原理是将待传输的数据从一台计算机的内存,直接传输到另一台计算机的内存,整个传输过程无需操作系统和协议栈的介入。由于旁路了操作系统协议栈,通讯过程极大的降低了CPU的使用率,减少了内核的内存复制,以及用户态与内核态的上下文切换。

常见的RDMA实现有三种,基于以太网的Roce网络(RDMA over Converged Ethernet), InfiniBand, iWARP。

cdn.nlark.com/lark/0/2018/png/25353/1540806975240-659279da-052f-4607-8fa9-4212b9490ca2.png">

阿里云支持RDMA

阿里云支持超级计算集群SCC,同时支持RoCE网络和VPC网络,其中RoCE网络专用于RDMA通信。SCC 主要用于高性能计算和人工智能/机器学习、科学/工程计算、数据分析、音视频处理等应用场景。
RoCE(RDMA over Convergent Ethernet)网络速度达到InfiniBand网络的性能,且能支持更广泛的基于Ethernet的应用。
介绍: https://www.alibabacloud.com/help/zh/doc-detail/60576.htm
可以在ECS控制台直接购买包年包月的SCC机型虚拟机。 https://www.alibabacloud.com/help/zh/doc-detail/61978.htm

容器支持RDMA

容器服务目前已支持RDMA,您可以将SCC机型的ECS添加到容器集群中,并通过RDMA的Device plugin 在调度层面支持 RDMA。
通过声明 resourcesLimit rdma/hca: 1 ,可以指定将容器调度到RDMA的ecs上。

创建容器集群

进入容器服务控制台, 选择创建Kubernetes集群。由于SCC目前仅在上海地域支持,容器集群的地域请选择 华东2(上海) 。 配置完其他参数后,点击集群创建,等待集群创建成功。

部署RDMA Device plugin

在容器服务控制台中,选择使用模板部署。 部署支持RDMA的Device plugin, 选择对应的集群和命名空间,模板如下:

apiVersion: v1kind: ConfigMapmetadata:  name: rdma-devices  namespace: kube-systemdata:  config.json: |    {        "mode">

通过手动添加的方式将SCC的ECS加入集群中

  • 创建SCC的ECS, 并且和容器集群在同一个VPC下。并且加入相同安全组

  • 在容器服务控制台上操作 集群-> 更多 -> 添加已有ECS。 使用手动添加, 并选择创建的RDMA机器。获取添加脚本。

  • 登录上ECS, 执行脚本。 最终添加成功有如下显示:

  • 在节点 -> 标签管理中,给rdma节点增加标签 aliyun.accelerator/rdma: true

image.png | left | 425x159

  • 增加标签后能够看到节点上的RDMA的device plugin pod被成功分配到SCC的节点上

部署两个测试镜像

apiVersion: v1kind: Podmetadata:  name: rdma-test-podspec:  restartPolicy: OnFailure  containers:  - image: mellanox/centos_7_4_mofed_4_2_1_2_0_0_60    name: mofed-test-ctr    securityContext:      capabilities:        add: [ "IPC_LOCK" ]    resources:      limits:        rdma/hca: 1    command:    - sh    - -c    - |      ls -l /dev/infiniband /sys/class/net      sleep 1000000---apiVersion: v1kind: Podmetadata:  name: rdma-test-pod-1spec:  restartPolicy: OnFailure  containers:  - image: mellanox/centos_7_4_mofed_4_2_1_2_0_0_60    name: mofed-test-ctr    securityContext:      capabilities:        add: [ "IPC_LOCK" ]    resources:      limits:        rdma/hca: 1    command:    - sh    - -c    - |      ls -l /dev/infiniband /sys/class/net      sleep 1000000

在一个容器中执行 ib\_read\_bw -q 30

看完上述内容,你们对Kubernets中如何使用RDMA有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0