『砍柴网』新基建大潮下边缘计算成新风口,百度智能云推出BEC抓住新机遇( 二 )
本文插图
简明边缘虚机架构
边缘虚机使用了开源的kubevirt方案来实现 , 通过Kubernetes的自定义资源API(CRD) , 增加虚机和虚机实例资源 , 使Kubernetes能够方便地编排管理虚机对象 。 Kubevirt的整体架构如下:
本文插图
【『砍柴网』新基建大潮下边缘计算成新风口,百度智能云推出BEC抓住新机遇】
可自定义虚机镜像
BEC通过与百度智能云BCC云服务器产品打通 , 充分利用中心云产品能力 , 为用户提供自定义虚机镜像的能力 。 用户在BEC上启动边缘虚机时 , 可以选择在BCC中制作的虚机镜像启动 。
Kubevirt支持多种存储挂载方式 , 在BEC中 , 系统盘的挂载使用的是dataVolume的方式 , 结合CDI(Containerized-Data-Importer)工具 , 完成虚机系统盘的准备 。 如下图:
本文插图
支持虚机资源整体调度
BEC为了提升性能 , 边缘使用本地盘作为虚机的系统盘 , 在系统盘pv准备完成后 , importer Pod会被删除 , BEC通过设置vm pod的亲和性 , 保证vm pod会调度到pv所在的节点 。 但是importer pod删除和vm pod创建过程中可能会有新的pod调度到此节点 , 并占用资源 , 会导致vm pod因资源不足而调度失败 。
为了解决这个问题 , BEC增加了对虚机生命周期过程中所有资源的整体调度能力 。 重点是保障importer删除后 , vm pod可以保证在同节点启动 , 另外一个是保障虚机关机开机时pod能在同节点重建 。
BEC对kube-scheduler组件进行了改造 , 在原有的节点资源管理模块增加了资源预留机制 , 为vm的pod预留出资源配额 , 不参与调度 。 对应上面提到的importer pod删除或者因vm关机导致的virt-launcher pod删除 , 对应的资源不会从scheduler的资源缓存中清理 , 并且通过hook资源同步逻辑 , 防止缓存被更新 , 从而保证了vm启动的稳定性 。
让边缘业务日志处理更简单
在业务运维中 , 日志是观察业务运行状态 , 排查业务问题的重要依据 。 在边缘服务场景中也是如此 , 但是边缘侧缺少中心云中完备的平台化日志服务 。 为了解决这个问题 , BEC结合云原生生态 , 实现了一套业务容器日志推送和监控指标采集的工具 。
该工具以sidecar容器的形式与业务容器共同运行在同一pod中 , 支持通过emptydir的方式与业务容器实现日志共享 , 也支持采集业务容器的标准输出 。 控制面通过configmap实现配置热更新下发 , 整体架构如下:
本文插图
日志指标提取 提升可读性
日志指标提取使用的是grok-exporter , grok-exporter是个轻量级的指标提取项目 , 可以很好对接prometheus 。 但是成熟度上还有待提升 , 主要问题有以下几点:
一是原生grok-exporter只能支持从一个文件或一个目录下的日志中提取指标 , 在生产环境中 , 客户多个容器的日志存储路径可能是不一致的 , 为此 , BEC对grok-exporter进行了改造 , 使其支持从多个文件或目录提取指标 , 并将文件名添加为label用于区分 。
二是原生grok-exporter不支持日志文件路径包含软链接或者环境变量 , 而生成环境中 , 很多日志文件 , 特别是标准输出日志 , 都是以软链接的方式来实现日志轮转 , BEC团队对此进行了改造 , 解决了该问题 。
三是提取指标时 , 对日志的偏移量没有做记录 , 在进程重启后会从文件开始处再次提取 。 为此 , BEC对该偏移量进行了持久化存储 , 进程重启后可以重新加载 , 继续从上一位置开始提取 。 而且BEC使用“inode+设备号+文件扩展属性”唯一标识一个文件 , 保证文件删除后 , 新建的同名文件可以被识别 。
推荐阅读
- 砍柴网|上交所:寒武纪科创板首发过会 此次融资 28.01 亿元
- 中小银行美美与共:中小银行与新基建
- 砍柴网|讯飞智能学习机 618 新惊喜,多重优惠助力孩子暑假弯道超车
- 基建新基建按下互联网保险“加速键” 慧择头部效应凸显
- 砍柴网|2K 全能档,技嘉 Z490 AORUS PRO AX 助你玩转十代酷睿
- 行业从跟跑到领跑:新基建大潮下如何跑出“中国式”新速度?
- 全息腾讯云公布AI新基建全景布局,微美全息AI视觉落地5大领域
- 砍柴网|致敬所有声音工作者,酷我音乐正式发布“主播全薪计划”
- 砍柴网|惠普、V社、微软异业联手 新款VR头显今秋开售
- 砍柴网|Android 11 Beta官宣:6月1日线上见
