关于ack:vivo-AI-计算平台的-ACK-混合云实践

11次阅读

共计 3392 个字符,预计需要花费 9 分钟才能阅读完成。

作者|刘东阳、吴梓洋

2018 年底,vivo AI 研究院为了解决对立高性能训练环境、大规模分布式训练、计算资源的高效利用调度等痛点,着手建设 AI 计算平台。通过两年多的继续迭代,平台建设和落地获得了很大停顿,成为 vivo AI 畛域的外围根底平台。平台从当初服务深度学习训练为主,到当初演进成蕴含 VTraining、VServing、VContainer 三大模块,对外提供模型训练、模型推理和容器化能力。平台的容器集群有数千个节点,领有超过数百 PFLOPS 的 GPU 算力。集群里同时运行着数千个训练任务和数百个在线服务。本文是 vivo AI 计算平台实战系列文章之一,次要分享了平台在混合云建设方面的实际。

背景

混合云是近年来云原生畛域关注的新方向之一,它是指将公有云和私有云服务联合起来应用的解决方案。目前几大公有云厂商都提供了各自的混合云计划,如 AWS 的 AWS Outpost、谷歌的 GEC Anthos 和阿里的 ACK 混合云。大部分厂商都是通过应用 Kubernetes 和容器来屏蔽底层基础设施的差别,对上提供对立的服务。AI 计算平台抉择建设混合云,次要是基于以下两点起因。

私有云的弹性资源

平台的集群应用公司自建机房内的裸金属服务器,新增资源的洽购流程简单、周期长,无奈及时响应业务长期的大量的算力需要,如大规模参数模型的训练和在线服务的节假日流动扩容。同时因为往年服务器供应链形势严峻,网卡、硬盘、GPU 卡等硬件设施都缺货,服务器洽购交付存在较大危险。私有云的资源能够按需申请和开释,通过混合云应用私有云资源,可能满足业务的长期算力需要,又能无效降低成本。

私有云的高级个性

私有云有一些高级的个性,比方 AI 高性能存储 CPFS、高性能网络 RDMA、深度学习减速引擎 AIACC,这些计划或个性目前公司公有云尚不具备,而私有化落地的工夫和金钱老本都很高,通过混合云能够疾速和低成本的应用这些个性。

计划

计划选型

通过后期调研,以下三种计划能够实现混合云的需要:

计划一的实现成本低、不扭转以后资源申请流程,可疾速落地。业务能够承受小时级的扩容。因而咱们抉择了计划一。

整体架构

混合云的整体架构如下图所示。K8s 集群的治理立体部署在公司自建机房,工作立体蕴含了机房的物理机和阿里云的云主机。机房和阿里云间通过专线买通了网络,物理机和云主机能够互相拜访。计划对下层平台通明,比方 VTraining 训练平台不须要改变即可应用云主机的算力。

落地实际

注册集群

首先须要将自建的集群注册到阿里云。留神应用的 VPC 的网段不能和集群的 Service CIDR 抵触,否则无奈注册。VPC 的虚构交换机和 Pod 虚构交换机的 CIDR 也不能和机房内应用的网段重合,否则会有路由抵触。注册胜利后,须要部署 ACK Agent。它的作用是被动建设从机房到阿里云的长链接,接管控制台的申请并转发给 apiserver。对于没有专线的环境,此机制能够防止将 apiserver 裸露在公网。控制台到 apiserver 的链路如下:

阿里云 ACK 控制台 <<–>> ACK Stub(部署在阿里云)<<–>> ACK Agent(部署在 K8s)<<–>> K8s apiserver

控制台到集群的申请是平安可控的。Agent 连贯 Stub 时,会带上配置的 token 和证书;链接采纳了 TLS 1.2 协定,保证数据加密;能够通过 ClusterRole 来配置控制台对 K8s 的拜访权限。

容器网络配置

K8s 的容器网络要求 Pod 和 Pod、Pod 和宿主机之间通信失常,平台采纳了 Calico + Terway 的网络计划。机房内的工作节点采纳 Calico BGP,Route Reflector 会将 Pod 的路由信息同步给交换机,物理机和云主机都能失常拜访 Pod IP。阿里云上的工作节点会采纳 Terway 共享网卡模式,Pod 会从 Pod 虚构交换机配置的网段中调配到 IP,该 IP 在机房内能够拜访。平台给云主机打上标签,配置 calico-node 组件的 nodeAffinity,不调度到云主机上;同时配置 Terway 组件的 nodeAffinity,让其只运行在云主机上。这样实现了物理机和云主机应用不同的网络组件。在部署和应用 Terway 中,咱们遇到并解决了以下三个问题:

1、terway 容器创立失败,报 /opt/cni/bin 目录不存在。

通过批改 terway daemonset 中该门路的 hostPath 的 type,从 Directory 改为 DirectoryOrCreate 能够解决上述问题。

2、业务容器创立失败,报找不到 loopback 插件。

terway 没有像 calico-node 一样在 /opt/cni/bin/ 目录下部署 loopback 插件 (创立回环网络接口)。咱们给 terway daemonset 增加了 InitContainer 来部署 loopback 插件,解决了问题。

3、业务容器调配的 IP 是属于主机交换机网段。

这是因为在应用中,咱们新增了一个可用区,然而没有把可用区的 Pod 虚构交互机的信息配置给 terway。通过在 terway 配置的 vswitches 字段新增可用区的 Pod 虚构交换机信息,能够解决问题。

云主机退出集群

将云主机退出集群的流程和物理机基本一致。首先通过公司云平台申请云主机,而后通过 VContainer 的自动化平台将云主机初始化并加到集群中。最初给云主机打上云主机专有的标签。对于自动化平台的介绍,能够参见 vivo AI 计算平台云原生自动化实际。

升高专线压力

机房到阿里云的专线是公司所有业务共用的,如果平台占用过多专线带宽,会影响到其余业务的稳定性。在落地时咱们发现深度学习训练任务从机房的存储集群拉取数据,的确对专线造成压力,为此平台采取了以下措施:

1、监控云主机的网络应用状况,由网络组帮助监控对专线的影响。
2、应用 tc 工具对云主机 eth0 网卡的上行带宽进行限流。
3、反对业务应用云主机的数据盘,将训练数据进行预加载,防止重复从机房拉取数据。

落地成果

数个业务方长期须要大量的算力用于深度学习模型的训练。通过混合云的能力,平台将数十台 GPU 云主机退出到集群,提供给用户在 VTraining 训练平台上应用,及时满足了业务的算力需要。用户的应用体验和之前完全一致。这批资源依据不同业务的状况,应用周期在一个月到数个月。通过估算,应用费用大大低于自行洽购物理机的费用,无效升高了老本。

将来瞻望

混合云的建设和落地获得了阶段性的成绩,在将来咱们会继续欠缺性能机制和摸索新个性:

反对 AI 在线服务通过混合云能力部署到云主机,满足在线业务长期算力需要。
建设一套简略无效的资源申请、开释、续期的流程机制,晋升跨团队的沟通合作效率。
针对云主机的老本、利用率进行度量和考核,促使业务方应用好资源。
将云主机申请、退出集群整个流程自动化,缩小人工操作,提高效率。
摸索云上的高级个性,晋升大规模分布式训练的性能。

致谢

感激阿里云容器团队的华相、建明、流生等和公司根底平台一部的杨鑫、黄海廷、王伟等对混合云计划的设计和落地过程中提供的大力支持。

作者介绍:

刘东阳,vivo AI 研究院计算平台组的资深工程师,曾就任于金蝶、蚂蚁金服等公司;关注 k8s、容器等云原生技术。

吴梓洋,vivo AI 研究院计算平台组的资深工程师,曾就任于 Oracle、Rancher 等公司;kube-batch, tf-operator 等我的项目的 contributor;关注云原生、机器学习零碎等畛域。

文内相干链接:

1)vivo AI 计算平台实战:
https://www.infoq.cn/theme/93

2)AWS Outpost:
https://aws.amazon.com/cn/out…

3)GEC Anthos:
https://cloud.google.com/anthos

4)ACK 混合云:
https://help.aliyun.com/docum…

5)AI 高性能存储 CPFS:
https://www.alibabacloud.com/…

6)深度学习减速引擎 AIACC:
https://market.aliyun.com/pro…

7)vivo AI 计算平台云原生自动化实际:
https://www.infoq.cn/article/…

点击下方,深刻理解阿里 ACK 混合云!
https://help.aliyun.com/docum…

正文完
 0