Kubernetes在上汽集团云平台及AI方面的应用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

帆一尚行成立于2015年,是上汽集团的全资子公司,建设有上海、南京、郑州(在建)三个数据中心,拥有超过4000台物理服务器,10PB的数据存储,总面积将近9000平米。

帆一尚行主要为用户提供弹性计算、存储网络、大数据、人工智能、安全等云产品及服务,并提供车联网、物联网、整车等行业解决方案。截至目前,已服务了上汽集团集团本部、上汽乘用车、上汽大通、吉安物流、赛客出行等40余家汽车企业。

2018年11月13日,由Rancher Labs、华为、CNCF联合主办的KubeCon + CloudNativeCon 的同场活动——云原生服务网格(Istio)企业峰会在上海隆重举行,上汽集团帆一尚行业务发展部总经理龚瀚申在峰会上进行了主题演讲,分享了上汽集团如何在利用Kubernetes的强大能力的同时,降低系统的使用门槛,使得Kubernetes技术能够多样化的满足不同技术水平用户的使用需求,并且利用Kubernetes的强大能力支撑人工智能等新兴业务。


发展背景

在上汽集团帆一尚行业务发展部总经理龚瀚申看来,汽车行业对互联网转型的需求主要集中在两个方面,一方面是汽车行业对于互联网云原生的需求,如车联网共享出行等,这些互联网业务带动了整个汽车行业的转型,而这一类的生态大多源于云的系统架构,属于云原生的系统。另一方面则是来源于公司内部的运营需求,运营方式无法实现对互联网快速变革需求的及时响应,重复的基础建设、复杂的系统架构以及封闭的业务系统,将会造成巨大的资源浪费和高昂的企业运营成本。

当企业将业务部署到云端之后,这样的情况便会得到相应的改善,除了降低整体的IT投资成本之外,基于云计算互联互通的优势,也能增加业务之间的数据交互。“从上汽集团的战略规划层面出发,我们需要开发大量的具有行业特性的产品。”龚瀚申分析道:“在上云的过程当中,云平台不单是资源提供方的角色,最重要的是它将通用技术与通用业务功能产品化。这是上汽云平台长期的一个发展方向。”

在明确上汽云平台未来的发展方向之后,他们制定了一个总体的云平台框架,将主要的任务集中放在两大平台进行处理。其一是基础服务平台,以虚拟化和数据中心作为技术核心,将标准化的硬件以虚拟资源的方式提供给用户,用户在资源池内按需计算。其二则是推出了平台服务,容器加上调度系统将构成平台服务的运行基础,当平台服务往业务层靠拢,将抽象出业务中台,当平台服务往技术层靠拢,将抽象出技术中台。不管是技术中台还是业务中台,运行基础都是由虚拟化和容器来提供的。所以在云数据中心,容器已经显然成为上汽集团帆一尚行的一个核心技术,它不仅是一个轻量级的PaaS,也是IaaS平台更小颗粒的虚拟化,为整个平台提供运行基础。

实践历程

从时间线上来看,上汽集团在容器技术的探索和实践与容器技术的整体发展息息相关。

2015年,上汽集团帆一尚行的开发团队使用Docker跑了一些简单的网站应用,开发人员在笔记本上运行一些简单的代码,通过容器打包推送到帆一尚行的虚拟环境里面,在秒级的响应时间内便可以启动打包的应用。“我们将Docker和OpenStack进行了对比,也在内部进行了容器是否会取代OpenStack的议题讨论。”龚瀚申回忆:“由于容器成熟度以及用户成熟度的问题,我们认为短期内容器还无法取代OpenStack,但基于这次尝试,我们感受到了容器在资源利用率和环境一致性上的优势。”

2016年,上汽集团帆一尚行在Docker以及编排系统上投入了更多的精力,开发团队调研了市面上Rancher、Mesos+Marathon、Kubernetes以及Docker+Swarm等系统,不同的系统在系统成熟度以及部署难易程度上存在一定的差别,最终选择了Docker+Swarm去搭建企业的集群,并开始了利用小规模集群支撑整体营销活动的实践及推广。

到了2017年,随着Kubernetes的呼声和热度越来越高,产品也日趋成熟。上汽集团帆一尚行开发团队在内部小范围构建了Kubernetes的小型集群,将其应用于整个GPU资源平台的调度。经过这一两年的尝试及探索,上汽集团帆一尚行正式将Kubernetes列为产品线的重要产品,用以支撑整个容器平台的运行。

“在建设Kubernetes平台的初期,我们从多个维度设定了容器平台的目标。”龚瀚申分享道:“从部署的维度出发,它必须支持多跨数据中心的部署,必须支持主流公有云和私有云平台的部署;从资源调度编排的角度出发,它必须支持主流的CPU调度,必须以开放标准的形式提供存储与网络的对接;从租户管理的角度出发,它必须可以提供多租户的资源配额,让租户在自己的配额里面可以调度资源以及镜像仓库;从整体运营管理的角度出发,它必须提供一个统一对接Kubernetes集群管理的平台,必须能对Kubernetes集群进行灵活增减,以及能实现简单的监控功能。”

通过一系列的探索与实践,上汽集团最终落地了最符合自身需求的容器技术选型:基于物理服务器构建基础设施,利用自研基于Ansible的Kubernetes进行整个集群的自动化部署;通过Rancher来实现平台的统一管控,对接统一认证系统,实现应用部署管理、多租户、配额管理等高级功能;在网络的层面上,选择利用Calico BGP网络+外部L4L/7的负载均衡来实现多种应用的发布形式;存储则是沿用了Swarm里面的Nexenta以及PortWorx来打造分布式存储方案;最后,上汽集团还基于Prometheus进行平台监控和外部统一监控告警。

Kubernetes集群与上汽集团帆一尚行的用户界面是集成的,用户可以通过登录Saicmotor的门户网站直接使用上汽集团帆一尚行的Kubernetes集群,或者是通过上汽集团帆一尚行周边的云平台产品如应用开发日志、日志管理等来进行对Kubernetes集群进行管控。而上汽集团帆一尚行的运维人员则是通过Rancher的管理界面来管理底层的Kubernetes集群。

“关于Kubernetes应该怎样以产品的方式提供给用户,我们也进行了一些场景化的思考。有人会将Kubernetes当作是数据中心的管控系统,有人会将它作为是任务调度的管理系统,还会有人将Kubernetes当作是微服务的一个治理框架,在不同的而场景下,大家对Kubernetes的定义是不一样的。”龚瀚申分析:“这一切就是源于Kubernetes它开放的多维度框架设计理念以及简单易用的产品特性,所以我们将它理解为一个可扩展、可组合的调度系统框架。”

针对Kubernetes的产品特性和用户对Kubernetes的熟悉程度,上汽集团帆一尚行设计了两类产品形态。一类产品形态针对初级用户,将Kubernetes封装起来,以另外一种形式为用户提供服务,用户更多体验到的是以容器技术为主的应用部署和发布能力。另一类则针对高级用户开放,用户可以独享一个Kubernetes集群,并且通过一键部署来快速实现,可以充分体验Kubernetes的特性。

AI应用

在内部的项目落地之后,上汽集团为了实现对L4自动驾驶产业化软件的开发以及复杂场景下自动驾驶功能的建设需求,他们对容器平台提出了更高的要求。

“平台必须提供完整的AI软件开发流程管理体系,包括数据管理、模型管理、仿真测试、模型压缩等系统功能,和车端行程从训练到推理的AI软件开发闭环。”龚瀚申将这一目标归结为两大需求,一是AI训练服务,将专注于数据标注、数据存储、CPU训练以及分布式训练;二是AI模型,包含训练服务、托管发布和模型的版本管理。

同时,这一平台将定义为集团层面的公共训练服务平台,不仅服务于上汽集团智能驾驶的部门,还将为集团下属的整车物流零部件等企业提供AI训练服务。那么,对于这一平台来说,任务调度功能以及租户隔离功能都是不可或缺的。

上汽集团帆一尚行开发团队在进行技术选型的时候,发现Kubernetes能完美地实现资源层的调度和服务层的任务调度功能,也能对租户的GPU资源和网络存储资源进行很好的隔离。最终在AI平台应用的层面,上汽集团也选择了Kubernetes进行应用于落地。

那么,整个AI平台是怎么进行业务实现的呢?从横向的角度来看,上汽集团的AI平台客户分为三个层面,一是人力层面,二是算力层面,三是数据层面。数据层面将产生大量的数据,如行车交通标志、雨天产生的大量视频和图像,以及一些信号数据,这些数据将被收集起来,送到算力平台上,最终由上汽集团帆一尚行的人力分工对这些数据进行处理和训练,最终产出一个算法。从纵向的角度来看,平台的人力团队被划分为三类,一是标注团队,主要负责模型服务;二是算法团队,三是运营团队,起到协调的作用。

当帆一尚行的开发团队和业务进行沟通之后,抽象出了AI平台的系统逻辑框架,第一层为基础层面,由Kubernetes和存储构成;第二层为Service层面,包括需要调度的算法和需要进行的数据处理;还有一个层面就是前台的服务层,包括数据管控的流程、任务发布等。当Kubernetes接到调度之后,将去Service的层面去调度Service模块,然后Kubernetes再把GPU资源、存储资源分配给Service模块,Service模块进行统一的训练和计算,最终把结果返回到前台的用户。

“所有这些调度的服务层的任务全部都是以镜像的形式存储在Kubernetes的镜像仓库里面,Kubernetes在整套系统里面起到的是多任务控制的调度以及资源调度的作用。所以这个核心实际上是有底层的Kubernetes实现的。”龚瀚申补充道:“我们团队会根据算法团队打包他们的算力,把它存储在镜像仓库里面,由他们自主地通过前端的前台来自主地发起任务训练。这就是Kubernetes在上汽集团AI平台的应用。”

转载于:https://my.oschina.net/u/3330830/blog/2961925

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的Java培训经历

此文讲述我的Java开发培训经历,来解答关心的培训费、培训节奏、就业等问题。 我在2010年参加达内Java培训,如今再回首那段时光,虽然辛苦,但很值得!(后悔参加培训班,大部分原因是冲动&#xff0…

python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解

首先,先介绍两种引入模块的方法。 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 需要从某个文件中引入多个函数或变量时&#xff0c…

软件培训技术选哪个?

要培训了,培训技术怎么选? 技术需慎重选 女怕嫁错郎,男怕入错行。后悔参加培训班,因为技术没选好的占比很高。 技术没选好会有什么影响? 近的影响是就业!远的影响是发展! 对于程序员来说,技术就是立身之本,需要慎重选择! 我在《要不要参加培训班?》文章中介绍…

django安装_技术大牛详解:Django框架之环境安装

黑马程序员视频库播妞微信号:boniu236传智播客旗下互联网资讯、学习资源免费分享平台虚拟环境安装:开发中问题:如何在同一台主机中,要开发多个不同的项目,而且需要用到同一个包的不同版本?尝试分析:在开发过…

安装 Alibaba Cloud Toolkit

IntelliJ IDEA版 JetBrains 插件市场下载 Eclipse 版 Eclipse 插件市场仓库下载 (推荐)URL 地址在线安装Maven 版 在 POM 文件中依赖 PyCharm、PhpStorm、RubyMine 和 WebStorm 版 公测中官网https://toolkit.aliyun.com 交流群(钉钉) 交流群&#xff08…

软件Java前端大数据培训机构怎么选?

先看这篇文章《要不要参加培训班》。 选技术就像选另一半,那选培训机构就是选另一半的家庭。另一半家庭好与不好,与婚后幸福生活息息相关。 选培训机构的几个维度: 1.成立时间 2.专业性 3.市场普及率 成立时间 成立久的不一定好,比如北大某鸟 成立不足3年的,不要选…

Chrome浏览器多开,亲测有效

原理 指定不同的用户目录,就可以实现多开。即:"--user-data-dir" 指定不同的目录。 操作 新建用户目录文件夹 要开几个,就新建几个,文件夹名随意。 复制chrome快捷方式 修改目标路径 每个快捷方式,修改…

培训时常犯的学习误区与应对方法

和在学校里上课一样,同一位老师教,同班同学成绩不同。同学之间的资质都是差不多的,因学习方法不同,学习心态不同,课后努力程度不同导致的成绩差异。 本文介绍下培训时容易犯的学习误区和误区的应对方法。 误区1 不懂不明白的地方,非要打破铁锅问到底。 应对方法 培训…

超越培训班同学的独门绝技

​​​​​​​本文讲3个独门绝技,十多年苦练多得,只传有缘人。 ​​​​​​​ 不订阅,就是不给看 绝技1 -----权益保护线----- -----权益保护线----- -----权益保护线----- -----权益保护线----- -----权益保护线----- 写CSDN博文 CSDN上有不少参加培训班的…

DataQ数据对象为空的解决方法

问题 在dataq上面创建周期任务的时候发现了这么一个问题,配置好目标源之后,数据对象的下拉选项中是空的,如下图。 原因 是因为目前无法使用自动创建目标表功能,需要自己去dataworks上面先自己创建好。 措施 1.创建目标表 2.创…

pythonifnotnone_使用 if x is not None 还是if not x is None

使用 if x is not None 还是if not x is None呢? 谷歌的风格指南和PEP-8都使用if x is not None,那么它们之间是否存在某种轻微的性能差异呢?通过测试发现没有性能差异,因为它们编译为相同的字节码:Python 2.6.2 (r262…

Java工具实现无水印批量下载

自媒体时代是指以个人传播为主,以现代化、电子化手段,向不特定的大多数或者特定的单个人传递规范性及非规范性信息的媒介时代,人人都有麦克风,人人都是记者,人人都是新闻传播者。这种媒介基础凭借其交互性、自主性的特…

proxmox集群节点崩溃处理

问题描述在现有集群加入一个物理节点,接着再此节点创建ceph监视器、创建OSD。从宿主机系统执行ceph osd tree查看状态,创建起来的几个OSD状态都正常(up),从proxmox管理界面看也是这样。突然不知道什么原因,…

python csv转excel_将Excel文件转为csv文件的python脚本

将Excel文件转为csv文件的python脚本 #!/usr/bin/env python __author__ "lrtao2010"Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级目录下 支持xlsx 和 xls 格式 在同级目录下生成名为excel_to_csv.csv 的文件,采用UTF-8编码import…

前端多图片上传怎么控制顺序_Web前端经典面试题有哪些 如何能走向高薪之路...

Web前端经典面试题有哪些?如何能走向高薪之路?Web前端在近几年是越来越火热了,很多人看到了前端的高薪资,更看到了前端行业的发展前景,所以纷纷投入到学习前端技术学习中来。下面给大家总结整理一些Web前端经典面试题&…

解决windows指纹登录不灵问题

原因:不是指纹设备问题,是windows把指纹设备关了。 解决方法:进入设备管理器,找到生物指纹,按下图操作

OSI七层模型白话解释

各层设备 应用层……………….计算机:应用程序,如FTP,SMTP,HTTP 表示层 ……………….计算机:编码方式,图像编解码、URL字段传输编码 会话层 ……………….计算机:建立会话,SESSI…

利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从…

51CTO会员开通成功!开森!

很好,是理想中的学习平台,果断买了!^_^ 开森ing 转载于:https://blog.51cto.com/13601545/2324935

一个请求多个响应_一个TCP连接到底可以发多少个HTTP请求?

曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连…