新基建让边缘计算价值显现,百度智能云推BEC加速直播等行业升级( 三 )

BEC对kube-scheduler组件进行了改造 , 在原有的节点资源管理模块增加了资源预留机制 , 为vm的pod预留出资源配额 , 不参与调度 。 对应上面提到的importerpod删除或者因vm关机导致的virt-launcherpod删除 , 对应的资源不会从scheduler的资源缓存中清理 , 并且通过hook资源同步逻辑 , 防止缓存被更新 , 从而保证了vm启动的稳定性 。

让边缘业务日志处理更简单

在业务运维中 , 日志是观察业务运行状态 , 排查业务问题的重要依据 。 在边缘服务场景中也是如此 , 但是边缘侧缺少中心云中完备的平台化日志服务 。 为了解决这个问题 , BEC结合云原生生态 , 实现了一套业务容器日志推送和监控指标采集的工具 。

该工具以sidecar容器的形式与业务容器共同运行在同一pod中 , 支持通过emptydir的方式与业务容器实现日志共享 , 也支持采集业务容器的标准输出 。 控制面通过configmap实现配置热更新下发 , 整体架构如下:


新基建让边缘计算价值显现,百度智能云推BEC加速直播等行业升级

----新基建让边缘计算价值显现 , 百度智能云推BEC加速直播等行业升级//----

日志指标提取提升可读性

日志指标提取使用的是grok-exporter , grok-exporter是个轻量级的指标提取项目 , 可以很好对接prometheus 。 但是成熟度上还有待提升 , 主要问题有以下几点:

一是原生grok-exporter只能支持从一个文件或一个目录下的日志中提取指标 , 在生产环境中 , 客户多个容器的日志存储路径可能是不一致的 , 为此 , BEC对grok-exporter进行了改造 , 使其支持从多个文件或目录提取指标 , 并将文件名添加为label用于区分 。

二是原生grok-exporter不支持日志文件路径包含软链接或者环境变量 , 而生成环境中 , 很多日志文件 , 特别是标准输出日志 , 都是以软链接的方式来实现日志轮转 , BEC团队对此进行了改造 , 解决了该问题 。

三是提取指标时 , 对日志的偏移量没有做记录 , 在进程重启后会从文件开始处再次提取 。 为此 , BEC对该偏移量进行了持久化存储 , 进程重启后可以重新加载 , 继续从上一位置开始提取 。 而且BEC使用“inode+设备号+文件扩展属性”唯一标识一个文件 , 保证文件删除后 , 新建的同名文件可以被识别 。

此外 , 之前grok-exporter自身的日志格式不够友好 , 在组件运维过程中成本较高 。 为此 , BEC更换了日志库 , 对优化日志格式 , 提升日志可读性 。 以配置化方式支持日志轮转 , 方便日志清理 , 防止sidecar容器中的日志堆积占用过多资源 。

多种日志输出

BEC在日志传输上使用了开源的fluentbit , 对接了百度智能云ElasticSearch , 除此之外 , fluentbit原生还支持kafka、fluentd、http、nats等输出 。

基于以上众多业界首发的功能和先进技术 , 百度智能云以边缘计算开辟全新赛道 , 完成率先抢跑 , 充分迎接5G新时代 。 同时 , 百度智能云也在和运营商共同探索移动边缘计算 , 旨在提供用户更下沉的边缘资源 , 更低延迟的网络响应 , 更丰富的5G网络能力 , 面向未来无限可能 。


推荐阅读