首页 > 其他分享 >兼容传统应用,蓄力边缘云——博云胖容器解决方案

兼容传统应用,蓄力边缘云——博云胖容器解决方案

时间:2022-11-30 20:36:50浏览次数:32  
标签:容器 BeyondVM 博云胖 虚拟机 技术 兼容 蓄力 应用 传统


背景

最近几年基于容器技术的资源分配方式越来越流行,kubernetes作为容器领域事实上的容器编排技术也开始在企业中逐渐落地。借助容器/微服务/DevOps等技术,新生代的云原生应用得到了极大的普及。但在企业的应用生态中,当前云原生系统仅占很小的一部分,尚存在大量的传统应用无法享受容器技术带来的好处,业界需要一种专门针对传统应用快速上云的解决方案。

 

博云走访调研了多家企业客户,发现目前传统应用(非微服务架构)迁移到容器云平台,主要面临以下问题:

  • 当前有为数不少的legacy应用,无法或很难进行改造(微服务化,容器化等),需要安装各种agent。
  • 传统应用往往部署在虚拟机上,而虚拟机启动较慢,不能满足业务灵活性,弹性的需求。
  • 虚拟化技术堆栈较重,资源损耗大,客户希望能够充分发挥强大服务器硬件的能力。
  • 传统应用的运维人员更倾向于将应用系统视为pet而不是cattle,发现问题后更希望能手动去做调整。
  • 应用对性能敏感,容器环境下的高密度部署引起的CPU上下文切换等性能造成很大影响。

 

针对以上痛点,虚拟机和容器都不是最优解。经过广泛的技术调研,我们发现胖容器技术是一种可行且合理的解决方案。首先,从技术的发展趋势来看,胖容器技术是容器发展早期由容器领域的先行者广泛采用的一种既可以获取容器轻量的优势又可以广泛支持传统应用的一种技术。但随着容器的快速普及,胖容器技术作为一种过度阶段的技术并没有得到发扬光大。其次,胖容器的实现方式也有多种,多家企业或开源组织也推出了形态各异的解决方案,从技术实现上基本可以分类为两种:vm-based和container-based。这些解决方案也基本上都针对kubernetes进行了集成,非常适合于当今容器云平台的建设。

 

博云胖容器技术BeyondVM

 

BeyondVM是一种container-based实现的胖容器技术,兼容OCI标准,可以灵活的与Kubernetes集群进行集成。

 

兼容传统应用,蓄力边缘云——博云胖容器解决方案_kubernetes

 

01

1号进程

容器技术推崇单进程模型,而胖容器技术与容器技术一个明显的差异点就是在胖容器内部运行一个init进程,而传统的容器(如 docker 容器等)将容器镜像中指定的 CMD作为容器内 pid=1 的进程。BeyondVM技术支持使用systemd和sbin/init作为init进程。init程序的引入,使得胖容器内的运维工作成为可能,也为传统应用上云提供了很大的便利。

 

兼容传统应用,蓄力边缘云——博云胖容器解决方案_运维_02

 

02

容器的CMD

容器的CMD代表了容器内部运行的业务系统。beyondVM技术会自动将其托管在Init进程下,运维人员可以方便的对业务系统进行运维工作。

 

03

系统组件或特定agent

传统应用和应用的运维人员依赖众多系统组件,比如ssh/rsyslog/crond等。这部分传统应用上云时可以直接安装相应组件并做成镜像,这样既获取了容器交付可移植性强的优势,又保留了传统的使用习惯。

 

兼容传统应用,蓄力边缘云——博云胖容器解决方案_容器云平台_03

兼容传统应用,蓄力边缘云——博云胖容器解决方案_kubernetes_04

 

04

资源视图隔离

传统的应用系统经过多年的维护,往往具有多种的优化措施,例如业务上线后,自动根据环境资源大小调整运行时参数。但传统容器环境下,即使为容器设置了cpu/mem配额,容器内部的业务系统仍然会看到主机的计算资源。这对传统的应用如典型的java应用造成了很多问题。BeyondVM技术利用lxcfs技术对容器的资源进行了视图隔离,从而让内部运行的业务系统能自动感知容器自身的计算资源。

 

05

业务启动前和停止后的钩子处理

因为BeyondVM技术与Kubernetes进行了集成,因此可以天然利用kubernetes为pod提供的钩子函数实现业务系统启动前和停止后需要的处理工作。

 

与容器、虚拟机的技术对比

 

 

虚拟机

容器

BeyondVM

模型

基于kvm+qemu,内核隔离

基于cgroup+namespace,共享内核

  • 基于runv实现内核隔离

基于cgroup+namespace,共享内核

  • 基于runv时限内核隔离

资源消耗

镜像体积

进程模型

虚拟机内可以运行多个进程

容器内单进程

BeyondVM内部可以运行多个进程

状态保持

  1. 支持固定IP
  2. 保存虚拟机内部的变更动作
  1. 不推荐固定IP且功能实现依赖网络插件
  2. 重新发布后不保存任何变更
  1. 支持固定IP
  2. 保存变更动作*

弹性伸缩

状态重,弹性伸缩慢

手动、自动快速弹性伸缩

手动、自动快速弹性伸缩

移植性

微服务、DevOps支持

Kubernetes支持

支持

支持

主要场景

  1. 传统的资源申请流程
  2. 老旧系统资源池
  1. 无状态,快速伸缩
  2. 微服务、快速伸缩
  1. 老旧系统快速上云并实现弹性伸缩
  2. 依赖资源视图隔离的业务系统
  3. CPU敏感型的业务系统

 

 

BeyondVM核心优势

BeyondVM 提供相对完备的进程树和系统服务的容器环境,使得业务获得虚拟机的运行体验,无需改变代码即可实现向容器平台的迁移。利用BeyondVM技术,可以实现:

  1. 比虚拟机轻量的资源分配能力,以方便资源快速申请、弹性。
  2. 类似虚拟机的使用体验,可登陆,可任意安装组件。
  3. 有固定IP地址,胖容器从创建到删除,IP地址保持不变。
  4. 可以通过ssh远程登录系统。
  5. 登录登录后,可以通过传统的yum命令安装标准的软件包, 比如mysq,apache。
  6. 可以安装运维类的agent,不影响应用的正常部署流程。
  7. 资源隔离,如CPU、内存等。
  8. JVM,监控类工具看到的资源不是整个物理机的资源,而是真实分配给胖容器使用的资源。

 

展望

当前容器云平台建设的过程中,上线的往往是新的业务系统;企业中大量的存量业务仍然运行在物理机或虚拟机环境中。虽然目前已经有部分企业碰到了传统应用上云困难的问题,但整体上这部分需求还不强烈。我们有理由相信,随着容器技术在企业生态中的占比逐渐增加,传统应用上云的需求会逐步释放出来,胖容器技术将在其中发挥重要作用。

 

标签:容器,BeyondVM,博云胖,虚拟机,技术,兼容,蓄力,应用,传统
From: https://blog.51cto.com/u_11976981/5900458

相关文章

  • 利用postcss-px-to-viewport将pc端项目兼容移动端
    安装npminstallpostcss-px-to-viewport--save-dev在vue中使用根目录新建postcss.config.js文件输入以下代码module.exports={plugins:{'postcss-px......
  • PBlaze6 6530系列企业级SSD获得浪潮信息澎湃技术兼容性认证
    近日,北京忆恒创源科技股份有限公司(以下简称“Memblaze”)的PBlaze66530系列企业级NVMe完成与浪潮信息NF5280M6服务器平台的兼容性适配认证,获得澎湃技术认证授权证书。​澎湃......
  • FSR-Unity-URP 1.0 的性能和兼容性问题
    1)FSR-Unity-URP1.0的性能和兼容性问题​2)计算大文件MD5耗时问题3)如何监听Unity即将ReloadScript4)如何对Unity游戏的Android崩溃和ANR问题进行符号化解析这是第315篇UW......
  • Java开发学习(四十五)----MyBatisPlus查询语句之映射匹配兼容性
    1、映射匹配兼容性我们已经能从表中查询出数据,并将数据封装到模型类中,这整个过程涉及到一张表和一个模型类:之所以数据能够成功的从表中获取并封装到模型对象中,原因是表......
  • ios中getTime()的兼容性问题
    时间格式为:2017-12-1212:00:00在苹果上获取时间戳有兼容性问题 需要转换成2017/12/1212:00:00 才可以正确获取到时间戳 vargetTime=function(time){varmyDate......
  • Spring--案例:百度网盘密码数据兼容处理
    案例再度来袭也就是说,在百度网盘的密码复制时,后面即使有空格也能提取成功(trim方法)案例的实现:也就是实现存在空格时,也能输出true;现在的话:那么,我们应该如何使得它忽......
  • 事件对象的兼容
    每个事件函数天生有一个参数叫event,它是事件对象,如果想修改event的名称,事件函数的第一个参数就是用来修改的<divid="div"></div>varoDiv=document.getElementById("......
  • php文件目录分隔符Windows与linux兼容的问题
    再这两个系统中,Windows的分隔符是“\”,linux是“/”,所以在文件目录匹配的时候可能会遇到系统不兼容出错,所以一般定义目录分隔符使用如下php常量:DIRECTORY_SEPARATOR......
  • lightdb开启mysql兼容模式
    首先,从www.hs.net/lightdb下载最新版本并在安装时选择oracle模式,如下:  http://www.light-pg.com/docs/LightDB_Install_Manual/13.8-22.3/install.html#guilight......
  • Vulkan API的性能及兼容性
    1)VulkanAPI的性能及兼容性​2)FrameTiming.gpuFrameTime获取GPU耗时有什么条件3)MMO里面的寻路网格如何制作4)万国这种联盟边界的实现思路这是第314篇UWA技术知识分享的推......