RDMA(全称RemoteDirect Memory Access) 它为了解决网络传输中服务器端数据处理的延迟而产生。json
它的原理是将待传输的数据从一台计算机的内存,直接传输到另外一台计算机的内存,整个传输过程无需操做系统和协议栈的介入。因为旁路了操做系统协议栈,通信过程极大的下降了CPU的使用率,减小了内核的内存复制,以及用户态与内核态的上下文切换。centos
常见的RDMA实现有三种,基于以太网的Roce网络(RDMA over Converged Ethernet), InfiniBand, iWARP。api
阿里云支持超级计算集群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,您能够将SCC机型的ECS添加到容器集群中,并经过RDMA的Device plugin 在调度层面支持 RDMA。
经过声明 resourcesLimit rdma/hca: 1
,能够指定将容器调度到RDMA的ecs上。服务器
进入容器服务控制台, 选择建立Kubernetes集群。因为SCC目前仅在上海地域支持,容器集群的地域请选择 华东2(上海) 。 配置完其余参数后,点击集群建立,等待集群建立成功。网络
在容器服务控制台中,选择使用模板部署。 部署支持RDMA的Device plugin, 选择对应的集群和命名空间,模板以下:机器学习
apiVersion: v1 kind: ConfigMap metadata: name: rdma-devices namespace: kube-system data: config.json: | { "mode" : "hca" } --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: rdma-device-plugin namespace: kube-system spec: template: metadata: annotations: scheduler.alpha.kubernetes.io/critical-pod: "" labels: name: rdma-sriov-dp-ds spec: hostNetwork: true tolerations: - key: CriticalAddonsOnly operator: Exists containers: - image: registry.cn-shanghai.aliyuncs.com/acs/rdma-device-plugin name: k8s-rdma-device-plugin imagePullPolicy: IfNotPresent securityContext: privileged: true volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins - name: config mountPath: /k8s-rdma-sriov-dev-plugin volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-plugins - name: config configMap: name: rdma-devices items: - key: config.json path: config.json
apiVersion: v1 kind: Pod metadata: name: rdma-test-pod spec: 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: v1 kind: Pod metadata: name: rdma-test-pod-1 spec: 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
性能
另外一个容器中执行 ib\_read\_bw -q 30 <上一个容器的 ip>
学习
出现测试结果,说明两个容器之间能够经过RDM完成数据传输。 带宽为5500Mb/S, 约44Gbit/s。测试
tips: RDMA通信建连过程广泛分为 TCP 和 RDMA_CM 两种实现,若是应用程序使用RDMA_CM 的建连的方式,vpc网络插件中分配的pod ip 没法做为RDMA_CM 地址, 容器须要设置HostNetwork。并将bond0 ip 设置为CM的通信地址。
云服务器99元拼团购!拉新还可赢现金红包!300万等你瓜分!
立刻一键开团赢红包: http://click.aliyun.com/m/100...
本文为云栖社区原创内容,未经容许不得转载。