当前位置: 首页 > news >正文

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

公司简介

某国家级智能网联汽车研究中心成立于 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 发布!

相关文章:

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

公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议、共性技术研发中心、创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位。 目前着力建设基于大数据与云计算的智能汽车云端运营…...

面试之ReentrantLock

一,ReentrantLock 1.ReentrantLock是什么? ReentrantLock实现了Lock接口,是一个可重入且独占式的锁,和Synchronized关键字类似,不过ReentrantLock更灵活,更强大,增加了轮询、超时、中断、公平锁…...

系统学习Linux-MongoDB

概述 mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON 相关概念实例:系统上运行的mongodb的进程,类似于mysql实例;库:每个数…...

【带着学Pytorch】2、张量(Tensor)的介绍与创建

一、Tensor介绍 1.1、 张量是什么? 最开始在出现CPU和GPU, GPU出现主要解决的问题时并行计算,在此基础上的软件层面的工作基本上围绕着并行计算进行的,张量也不例外。 首先,我们先来聊聊 编程语言,python,java ,C,C++等,他们都有的共同特点是什么?在大学中计算机类…...

UniApp 制作高德地图插件

1、下载Uni插件项目 在Uni官网下载Uni插件项目,并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…...

C# 图像处理之灰色图转化为RGB图像

咨询通义千问的“C# 图像处理之灰色图转化为RGB图像”结果,看看如何: 在C#中,可以使用Image类来处理图像。要将灰色图像转换为RGB图像,可以按照以下步骤进行操作: 1.创建一个灰色图像对象。 Image grayImage Imag…...

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…...

Azure使用CLI创建VM

使用CLI创建VM之前,确保资源中的IP资源已经释放掉了,避免创建的过程中没有可以利用的公共IP地址打开 cloudshell ,并输入创建CLI的命令如下,-n指定名称,-g指定资源组,image指定镜像,admin-usernam指定用户名…...

Rust: 聊聊AtomicPtr<()>和 *const ()

在Bytes库在github源码&#xff08;https://docs.rs/bytes/1.1.0/src/bytes/bytes.rs.html#94-100&#xff09;有关Bytes的定义中&#xff0c; pub struct Bytes {ptr: *const u8,len: usize, // inlined "trait object"data: AtomicPtr<()>, vtable: &st…...

公网远程连接Redis数据库详解

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥&#xff0…...

天津报web前端培训班一定要选贵的吗?

根据这几年数据显示&#xff0c;IT行业飞速发展&#xff0c;岗位需求增多&#xff0c;Web前端是个很新的职业&#xff0c;在国内乃至国际上真正开始受到重视的时间不超过五年&#xff0c;Web前端开发是从网页制作演变而来&#xff0c;名称是有很明显的时代特性。 Web前端就业形…...

iptables学习笔记

iptables的结构&#xff1a; iptables由上而下&#xff0c;由Tables&#xff0c;Chains&#xff0c;Rules组成。 一、iptables的表tables与链chains iptables有Filter, NAT, Mangle, Raw四种内建表&#xff1a; 1. Filter表 Filter是iptables的默认表&#xff0c;它有以下…...

Express 实战(一):概览

在正式学习 Express 内容之前&#xff0c;我们有必要从大的方面了解一下 Node.js 。 在很长的一段时间里&#xff0c;JavaScript 一门编写浏览器中运行脚本的语言。不过近些年&#xff0c;随着互联网的发展以及技术进步&#xff0c;JavaScript 迎来了一个集中爆发的时代。一个…...

SpringBoot中的可扩展接口

目录 # 背景 # 可扩展的接口启动调用顺序图 # ApplicationContextInitializer # BeanDefinitionRegistryPostProcessor # BeanFactoryPostProcessor # InstantiationAwareBeanPostProcessor # SmartInstantiationAwareBeanPostProcessor # BeanFactoryAware # Applicati…...

中大型无人机远程VHF语音电台系统方案

方案背景 中大型无人机在执行飞行任务时&#xff0c;特别是在管制空域飞行时地面航管人员需要通过语音与无人机通信。按《无人驾驶航空器飞行管理暂行条例》规定&#xff0c;中大型无人机应当进行适航管理。物流无人机和载人eVTOL都将进行适航管理&#xff0c;所以无人机也要有…...

数字孪生和SCADA有哪些区别?

虽然SCADA和数字孪生用于工业领域&#xff0c;但它们有不同的用途。SCADA专注于工业过程的实时监测和控制&#xff0c;而数字孪生用于模拟和分析系统的性能。接下来&#xff0c;让我们详细讨论SCADA和数字孪生&#xff08;SCADA与数字孪生&#xff09;之间的区别。 SCADA与数字…...

[bug] 记录version `GLIBCXX_3.4.29‘ not found 解决方法

在使用mediapipe 这个库的时候&#xff0c;首次使用出现 GLIBCXX_3.4.29’ not found 错误&#xff0c; 看起来是安装mediapipe 的时候自动升级了 matplotlib 这个库&#xff0c;导致依赖的 libstd.so 版本不满足了&#xff0c;GLIBCXX_3.4.29 is an object from libstdc.so.…...

git 回滚相关问题

原本用as自带的git执行回滚任务&#xff0c; 但是提交之后发现并没有成功&#xff0c; 后面通过命令行的方式重新回滚并且提交上去&#xff0c;就可以了 说明as的git还是有点小瑕疵&#xff0c;还是命令行最稳妥 相关博文&#xff1a; git代码回滚操作_imkaifan的博客-CSDN博…...

SQL力扣练习(十一)

目录 1.树节点(608) 示例 1 解法一(case when) 解法二(not in) 2.判断三角形(610) 示例 1 解法一(case when) 解法二(if) 解法三(嵌套if) 3.只出现一次的最大数字(619) 示例 1 解法一(count limit) 解法二(max) 4.有趣的电影(620) 解法一 5.换座位(626) 示例 …...

如何将常用的jdbc方法封装起来???

你是否还在为每次新建项目连接数据库而烦恼&#xff1f;&#xff1f;&#xff1f;&#xff08;教你一次代码&#xff0c;简单完成每次连接&#xff09; 1.建立maven项目 还没下载安装或者不会建立maven项目的可以看这里哦&#xff1a;maven的下载安装与配置环境变量&#xff0…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...