前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >社区实践|基于SR-IOV-network-operator实现AI场景RDMA自动化配置开发

社区实践|基于SR-IOV-network-operator实现AI场景RDMA自动化配置开发

作者头像
灵雀云
发布2024-03-11 22:19:14
1800
发布2024-03-11 22:19:14
举报

在AI分布式训练场景中,通过Remote Direct Memory Access(RDMA)加速任务间网络数据读取已经成为AI应用性能优化的首选方案。RDMA能力由智能网卡提供,在Kubernetes环境下需要通过SR-IOV或MacVlan等方案将网卡虚拟化为多个子接口,每个Pod通过子接口使用网卡的RDMA能力从而实现一卡多用。浪潮云海和Kube-OVN社区合作分析了SR-IOV配置的痛点问题,引入sriov-network-operator项目并针对痛点问题进行优化来实现网卡RDMA自动化配置,结合Kube-OVN提供完整的生产环境RDMA应用方案。

01 RDMA及SR-IOV的配置繁琐且存在持久化等问题

RDMA及SR-IOV的配置时,需要处理多个参数和在不同厂商的网络设备上的配置差异。此外,RDMA VF设备的持久性问题以及与Kubernetes的联动更新也增加了管理和维护的复杂性。

1、RDMA SR-IOV配置繁琐。配置过程需要初始化SR-IOV网络设备的最大VF个数、期望VF个数、MTU大小、Vlan大小以及IOMMU配置等等;不同厂商网卡配置也有差异,Intel网卡需要在节点每次启动时加载ice、iavf、irdma等内核模块,Mellanox网卡则需要加载ofed相关内核模块;多个节点网卡名称不同时,也需要设置不同的配置脚本。面对这个问题通常解决方案是操作系统定制化、SR-IOV自动化配置脚本等,但这些方案灵活性差,实施过程繁琐。

2、RDMA VF设备持久化问题。RDMA VF设备是动态配置创建的,在节点服务器异常或更新重启后不能持久保存。通常使用系统服务、自定义 udev 规则在服务器启动时,来引导自动化脚本重新配置VF。但此种方式需要实施人员根据不同的环境开发脚本等,不具有通用性.

3、RDMA SR-IOV配置后如何与Kubernetes联动更新。因为device-plugin只在启动时触发一次发现上报VF设备信息,所以RDMA SR-IOV配置后需要手动重启device-plugin来联动更新Kubernetes中VF信息,来确保需要RDMA设备的Pod能够正常的调度和分配VF设备。当环境中添加新网卡/更改VF个数等需要更新配置时,重新配配置RDMA SR-IOV后,为确保Kubernetes集群、业务可用,需要花费大量的人力和时间去驱逐Pod、重启服务器来保证集群高可用。此过程需要实施人员具有深厚的Kubernetes技术积累和强的动手能力。

02通过sriov-network-operator实现自动化配置

浪潮云海通过引入sriov-network-operator组件解决了上述问题。其通过声明式配置,实现了SR-IOV的动态、自动化以及高可用配置,简化了SR-IOV及RDMA的手动管理,同时提高了系统的灵活性和可维护性,使其更契合云原生环境的快速部署和动态更新。

sriov-network-operator自动化配置SR-IOV工作流程如下:

全局通用SR-IOV配置模板:支持为所有节点不同厂商网卡定义不同配置资源来存储的期望SR-IOV相关信息,包括网卡名称、网卡类型、期望的VF数量、节点标签等。该配置以K8S资源的形式存储在Etcd数据库中,支持通过Kubernetes API动态配置。

节点SR-IOV配置模板: 根据当前节点信息从全局SR-IOV配置模板匹配和继承而来。配置过程状态以及错误信息,也会存储到此模板中。

分布式SR-IOV配置器:以守护进程的形式在每个节点部署一套SR-IOV配置器,负责该节点上SR-IOV信息的自动配置。其主要能力包括:

• 启动时完成前置准备工作,比如开启IOMMU内核参数、加载VFIO_PCI内核驱动等。

• 实时监听本节点SR-IOV配置资源信息变化,第一时间将其加载到配置器中。

• 支持自动配置SR-IOV信息。根据本节点SR-IOV期望配置信息,自动生成及执行配置脚本,并支持Pod驱逐、节点重启等操作使配置生效。

• 生成device-plugin依赖的节点差异化元数据,并重启device-plugin实现VF发现上报,也实现了Kubernetes组件间联动。

• 支持生成详细的配置过程状态信息,运维人员可通过状态信息快速的查询进度、定位解决问题。

• 顺序重启节点生效IOMMU配置和VF配置等信息来保障Kubernetes集群的高可用。

浪潮云海基于开发及生产环境实践,在原sriov-network-operator基础上进行了大量的优化和增强,比如支持Kube-OVN OVS Offload场景VF配置,sriov-network-operator相应Pod只调度到feature.node.kubernetes.io/network-SR-IOV.capable=true的节点、Intel网卡加载iavf内核模块、修改Pod驱逐方式为强制删除以避免驱逐失败时节点长时间不可用问题等,并兼容适配了Mellanox CX系列、Intel X7/E8系列等智能网卡。这些更新已经提交到Kube-OVN社区sriov-network-operator项目,开箱即用。

03:Kube-OVN+SR-IOV实现RDMA网络与标准Kubernetes网络并存的总体方案

在实际生产环境中,基于SR-IOV能提供用于Pod间通信的RDMA网络,但由于SR-IOV技术绕过了宿主机网络协议栈,所以Kubernetes原生Service等基本能力无法使用。我们通过Kube-OVN+SR-IOV方案同时提供RDMA网络与标准K8S网络,在满足上述功能同时,也能实现大规模网络多租户等其他能力,为客户数据提供更强的隔离性和安全性,总体方案如下:

在容器中,RDMA网络与标准Kubernetes网络采用独立的网卡,实现专卡专用,充分发挥了RDMA网络的能力。同时通过采用Kube-OVN作为全局IPAM(IP地址管理),简化了容器IP地址管理,实现了IP地址的统一规划、分配和释放,从而显著提高了管理效率,增强了容器环境的可维护性。

这一方案为构建高度优化的AI计算环境提供了关键的技术支持,促进了其在大规模数据处理和分布式计算中的应用,也有助于加速人工智能技术的发展,为应对日益增长的计算需求提供了可靠的网络解决方案。

参考链接:

https://github.com/kubeovn/kube-ovn

https://github.com/kubeovn/SR-IOV-network-operator

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档