基于 KubeSphere 的应用容器化在智能网联汽车领域的实践

news2024/11/17 16:18:41

公司简介

某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议、共性技术研发中心、创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位。

目前着力建设基于大数据与云计算的智能汽车云端运营控制中心平台。推进云端运营控制中心建设的过程中,运控中心平台的集成、部署、运维方案经历了 3 代的升级迭代过程。

第一代部署方案是直接将平台的前后端各个模块手动部署在自有物理机中,并将物理机托管在 ICT 的机房中。

第二代方案是将物理机集群用 Vmware ESXi 做了虚拟化,平台前后端各模块部署在虚拟机,提升了资源利用率,降低了资源使用量。

第三代,目前以容器化的方式部署在公有云的 KubeSphere 集群中。购买公有云的服务器资源,使用 KubeKey 安装 KubeSphere 集群,应用级服务采用 DevOps 流水线一键以容器化方式发布到 KubeSphere 集群中,真正实现了持续集成持续发布。应用研发工程师只需要在自己本地实现 feature 或者 fix bug,然后 commit 代码到 GitLab,之后通过 KubeSphere 的 DevOps 流水线一键发布到测试环境或者生产环境。通过使用 KubeSphere 以容器化的方式部署服务,减轻了各位研发工程师的发布工作负担,释放了研发资源。

目前团队组成:1 名架构师负责架构设计、项目管理等全局工作,4 名研发工程师负责研发工作,1 名 DevOps 工程师负责 DevOps 建设和运维工作,这样的一个小团队就可以高效顺利完成大系统的建设工作。

背景介绍

云计算的发展已经逐渐成熟,基于云计算的大数据、人工智能行业发展的越来越成熟,汽车领域与云计算、大数据、人工智能的融合创新发展势不可挡,自动驾驶已经在全球范围内陆续落地。我国汽车科学家基于我国国情和汽车行业发展趋势,提出了自动驾驶汽车的中国方案,也即车路协同方案,以弥补国际上单车智能方案的不足。

在这种行业发展背景下,推进建设车路协同的自动驾驶云端运营控制中心是亟待突破的行业共性关键技术。

在建设自动驾驶云端运营控制中心的过程中,面临许多的实际困难,比如软硬件资源比较紧张,研发人员非常少,建设任务特别繁重,运控中心平台对车辆侧、道路侧物理基础设施的依赖比较种等方面的因素,为了提高有限的存储、计算、网络等硬件资源的利用率和减轻有限研发人员工作负担、高质高效完成运控中心平台的建设任务,建设团队的集成和部署经历了物理机部署、虚拟机部署直到当前的基于 KubeSphere 的容器化部署方案的迭代和升级过程。

选型说明

在研究上云过程中,想过直接购买阿里云的 K8s 集群,但是由于公司本身有一些物理服务器要利用起来,所以就继续调研,最终选择 KubeSphere 作为容器化的解决方案。

我们选择 KubeSphere 的原因有以下几点:

  • 得益于 KubeKey 这个安装工具,安装起来更加方便,比以前单纯安装 K8s 要简便、容易的多。
  • KubeSphere 相当于给 K8s 做了图形界面,从 web 界面打开查看集群状态,对集群进行运维非常方便,比在命令行下敲命令简单明了的多。
  • KubeSphere 支持流水线功能,在不安装额外的软件的情况下就可以实现持续发布功能,持续发布和 K8s 结合在一起,工作起来减轻很多繁琐的操作。

实践过程

由于使用 KubeSphere 和 K8s 以容器化方式部署应用对项目组成员来说都是第一次,无论是比较资深的专家架构师,还是各位研发和运维人员来说,都是在做了基本调研和学习后首次使用,所以,我们的应用容器化之路是学习中使用、使用中提高的一个过程。

为了保障最后生产环境的服务容器化后能更加稳定可控,所以我们采取了 2 步走的战略:

  • 第一步,私有云测试环境部署运行以积累经验。先在测试环境搭建 Harbor、KubeSphere、K8s、Docker,建设测试环境的发布流水线将测试环境的各个服务以容器化的方式部署,让前后端的六十多个服务在测试环境先以容器化的方式稳定运行,这样通过测试环境的运行积累经验,等测试环境的容器云运行比较稳定,各种坑都趟过以后,再开始做生产环境的容器化。
  • 第二步,私有云生产环境服务部署。首先在物理机上部署了所有服务,让物理机上的运控中心平台稳定运行,以便领导随时检查线上平台运行情况,其次,再做了一份 KubeSphere、K8s、Docker,以容器化方式部署运控中心平台。这样双份的生产环境运控中心平台,当生产环境容器化的运控中心平台运行稳定以后,再将运控平台对外的域名绑定到容器化的运控中心平台上,逐步停用物理机中部署的运控中心平台。

基础设施与部署架构

测试环境和生产环境的 KubeSphere 部署架构基本是一样的。

集群规划:

节点 IP节点角色组件
192.168.16.70kp-master01kube-apiserver
kube-Scheduler
kube-controller-manager
Etcd
192.168.16.80kp-master02api-server
Scheduler
controller-manager
Etcd
192.168.16.100kp-node01Kubelet
kube-proxy
Docker
192.168.16.110kp-node02Kubelet
kube-proxy
Docker
192.168.16.120kp-node03Kubelet
kube-proxy
Docker
192.168.16.140kp-node05Kubelet
kube-proxy
Docker

具体部署架构图如下图所示:

线上环境参考:

  • 有状态服务主要是一些基础设施服务,比如 MySQL、Redis、ClickHouse 等这种,对于这些有状态服务还是采用虚拟机部署。
  • 无状态服务在 KubeSphere 中的服务如下图所示,包括应用层的前端模块、后端模块,都是采用容器化部署的方式部署。

存储与网络

运控中心平台的一些常规的业务数据采用 MySQL 存储,为了做数据的聚合 OLAP 分析采用 ClickHouse 存储分析性的历史数据,采用 Hadoop 和 Flink 对数据仓库中的数据做分布式的分析处理。采用 ELK 采集了容器集群中的服务日志。

DevOps 方案

测试环境和生产环境都在私有云中搭建,两套环境基本是完全一致。

项目代码统一使用 GitLab 进行配置管理,Docker 镜像采用 Harbor 进行存储,KubeSphere 中建立 DevOps 项目,在 DevOps 项目中为每一个模块建立发布流水线。流水线中的每一个环境都由一台发布服务器上的 shell 脚本具体执行。

使用效果

通过使用 KubeSphere 明显地减轻了工程师们的发布部署工作负担,提升了人员生产力和研发效能。研发工程师只需要在本地实现 feature 或者修复 bug,之后 commit 代码到 GitLab,然后在 KubeSphere 的 DevOps 流水线上点击运行,发布到测试环境或者生产环境的部署工作就彻底完成了,非常轻松简单。

通过使用 KubeSphere 以容器化的方式部署服务,最明显的收益如下:

  • 研发工程师在软件的部署上唯一需要做就是登陆 KubeSphere,点击运行流水线,极大地减轻了部署工作量,再也不用记忆各种奇怪的命令,省心省力。
  • 使用 KubeSphere 和 K8s 的进行应用容器化部署后,优化了硬件的资源利用率,降低了成本。

未来规划

通过 KubeSphere 的应用实践,发现 K8s 确实解决分布式微服务系统的很多问题,比如负载均衡、自动扩展等,DevOps 流水线功能尤其实用。

在未来,我们计划进一步改进运控中心平台的容器化,将有状态服务也尽量容器化,并将自动化测试加入到发布流水线中。

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

港联证券|油价上涨股票是涨还是跌?油价上涨股票是涨还是跌?

油价可以说是股市开展的晴雨表,对股市后期的开展有较大的的影响。那么油价上涨股票是涨仍是跌?下面就由港联证券为我们剖析: 油价上涨关于某些方面的股票来说是利好的,比如新能源产业和石油挖掘类职业等,关于某些股票还…

【Linux】进程创建、终止、等待、替换

进程控制 进程创建进程终止终止进程的方法 进程等待进程替换 进程创建 fork函数&#xff0c;它是从一个已存在的进程中创建一个新的进程。新的进程为子进程&#xff0c;而原进程为它的父进程。 fork函数的头文件为#include <unistd.h> 它的返回值为pid_t为无符号整型 在L…

Responder与evil-winRM配合远程登录Windows

0x01.evil-winRM 0x01.1概述 在使用和介绍Responder之前&#xff0c;先来了解一下evil-winRM: evil-winrm是Windows远程管理(WinRM) Shell的终极版本。 Windows远程管理是WS 管理协议的 Microsoft 实施&#xff0c;该协议是基于标准 SOAP、不受防火墙影响的协议&#xff0c…

基于JavaWeb的ssm家居商城系统的设计与实现

基于JavaWeb的ssm家居商城系统的设计与实现035 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高…

知了汇智“2023年暑期双师型师资培训班”火热进行中

为贯彻落实中共中央、国务院印发《关于全面深化新时代教师队伍建设改革的意见》、国务院办公厅印发《关于深化产教融合的若干见》、教育部办公厅发布《关于做好职业教育“双师型”教师认定工作的通知》等文件精神&#xff0c;助力“双师型”教师联合培养&#xff0c;提升信息技…

爬虫逆向实战(七)--猿人学第十六题

一、数据接口分析 主页地址&#xff1a;猿人学第十六题 1、抓包 通过抓包可以发现数据接口是api/match/16 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以看出m是加密参数 请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cook…

谷歌浏览器安装不上【搬代码】

winR 输入regedit 计算机\HKEY_CURRENT_USER\SOFTWARE\Google 然后重新安装谷歌

Linux驱动入门(6.2)按键驱动和LED驱动 --- 将逻辑电平与物理电平分离

前言 &#xff08;1&#xff09;在学习完Linux驱动入门&#xff08;6&#xff09;LED驱动—设备树之后&#xff0c;我们发现一个问题&#xff0c;设备树明明的gpios信息明明有三个元素gpios <&gpio5 3 GPIO_ACTIVE_LOW>; &gpio5 3 用来确定控制那个引脚&#xf…

vue,element。监听快捷键粘贴图片,添加到el-upload的列表。

在①中&#xff0c;粘贴图片&#xff0c;图片能够自动添加到底下el-upload组件的文件列表②。 // 对应① <el-card><el-tooltip content"粘贴图片至此" placement"top"><input readonly class"pasteImg" paste.prevent"hand…

GitHub Actions自动化部署+定时百度链接推送

前言 最近用VuePress搭建了一个静态网站&#xff0c;由于是纯静态的东西&#xff0c;每次修改完文章都要重新打包上传很是麻烦。虽然vuepress-theme-vdoing主题作者提供了GitHub Actions自动化部署的教程文章&#xff0c;但是过于简陋且是19年发布的。。 1. 创建一个GitHub仓…

从 1 杯咖啡到 1 首歌的时间,炎凰数据如何实现 Pipeline 执行提速 6 倍?

目录 痛点&#xff1a;工具链复杂、功能少、网不好&#xff0c;太 EMO&#xff01; 解法&#xff1a;All in one&#xff0c;一个平台串联需求→开发→发布 代码、CI/CD 一站式服务 需求、Story、Bug 一站式管理 关联代码 案例&#xff1a;3 个具体使用场景见真章 1. 灵…

MYSQL完全卸载、安装与账号创建、权限控制

一、卸载mysql CentOS 卸载 MySQL 1. 查看安装情况 使用以下命令查看当前安装mysql情况&#xff0c;查找以前是否装有mysql rpm -qa|grep -i mysql这里显示我安装的 MySQL 服务有有&#xff1a; 2. 停止 mysql 服务、删除之前安装的 mysql 删除命令&#xff1a;rpm -e –n…

聚焦纺织行业断线检测,AI机器视觉助力小场景的大未来

随着人工智能技术的发展&#xff0c;机器视觉以其快速、准确、高效的信息采集和处理优势&#xff0c;逐渐成为制造企业现代化升级不可缺少的技术之一&#xff0c;持续赋能相关传统劳动密集型产业的自动化与智能化转型。 传统劳动密集型产业对于人工依赖程度高&#xff0c;供应…

【IDEA报错:Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在】

报错内容如下&#xff1a; 2023-08-17 11:17:16.274 ERROR [egrant-biz,e44d96001eb5f212,e44d96001eb5f212,true] 29700 --- [ XNIO-1 task-2] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

【计组】校验码(奇偶校验码、海明校验码、CRC)

前言 1、小提示&#xff1a;本篇博文是参考王道&#xff0c;在复习 ASCII 码的基础上&#xff0c;总结校验码的相关学习知识点&#xff0c;并在最后搭配习题&#xff08;含408真题&#xff09;进行巩固练习。&#xff08;对重点内容进行划线、标色&#xff09; 2、适用人群&…

前端笔试+面试分享

以下是个人线下面试遇到的真实的题&#xff0c;仅供参考和学习 1. css 选择符有哪些&#xff1f;哪些属性可以继承&#xff1f;优先级算法加何计算&#xff1f; CSS选择符有很多种&#xff0c;例如类型选择器、类选择器、ID选择器、属性选择器、伪类选择器、伪元素选择器等。 …

linux tomcat server.xml 项目访问路径变更不生效

如果想改成默认的127.0.0.1:8080 访问项目 先确定更改的作用文件 server.xml 的 host:appBase 标签 默认找到appBase webapps 下的war包&#xff0c;并解压&#xff0c;解压后的appname为访问路径 也就变成了 127.0.0.1:8080/appname host:Context:path 标签 appBase的 优先…

深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习,通过面试

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下深度学习技巧应用25-深度学习在的常见问题与使用技巧&#xff0c;让大家更容易理解深度学习。在面对AI领域公司面试的过程中&#xff0c;往往面试官会针对AI领域或者算法实践进行提问&#xff0c;这些问题可能大家知…

laravel-admin之 解决上传图片不显示 $form->image(‘image‘); 及 $grid->column(‘image‘);

参考 https://blog.csdn.net/u013164285/article/details/106017464 $grid->column(‘image’)->image(‘http://wuyan.cn’, 100, 100); // //设置服务器和宽高 图片上传的域名 上传的图片不显示 在 这里设置了图片的上传路径 在这里设置 域名 就可以回显图片

如何用思维导图+Markdown提升工作效率?

在日常的工作中&#xff0c;我们常常需要记录一些信息、重要的事情或者一些重要的想法&#xff0c;Markdown就是一种非常好用的记录工具。搭配思维导图可以提高我们的记录效率&#xff0c;让我们的记录更加结构化。 为什么使用思维导图&#xff1f; 思维导图可以帮助我们整理…