哈啰云原生架构落地实践( 二 )


哈啰云原生架构落地实践

文章插图
在资源分配决策上,第一部分是Request推荐 。主要基于VPA Histogram计算百分位算法 , 通过获取7x24小时周期的应用资源量,根据P95百分位数据 , 再乘以水位系数放大后得到最终推荐值,并结合弹性、coolhealth状态机优化毛刺问题 。
哈啰云原生架构落地实践

文章插图
第二部分是实际负载调度,主要基于集群理想值权重算法和BinPacking装箱打分算法 。过滤掉高水位节点,避免单node资源打爆;水位偏离度缩小 , pod调度尽可能靠近理想水位;历史阈值计算应用负载,对节点未来水位预测;兼顾单node最大pod数限制 。
哈啰云原生架构落地实践

文章插图
第三部分是资源打散,通过问题推导,完全打散是不可能的,我们希望尽可能打散,在私有云IDC加入MDU策略 。常用的策略有宿主机打散、可用区打散和MDU打散 。
3.成效和问题
最终资源使用率有明显提高,成本账单同比持续降低 。这里也带来了一个无法回避的问题:物理机宕机 。爆炸半径增大,稳定性怎么保障,是我们基础设施的同学都需要去思考的问题 。二是对根因下钻和故障定位带来挑战,如何观测和评估影响 。
三、K8S观测与稳定性
1.基于Prometheus的容器监控平台
哈啰云原生架构落地实践

文章插图
基于Prometheus构建了监控体系 , 核心组件包括Thanos + Prometheus 持久化存储、Vertex Exporter 指标采集数据源、SentryD 配置管理、CheckD 告警检测和Alerts 告警系统 。
2.监控高级模式
哈啰云原生架构落地实践

文章插图
我们自研了vertex采集工具 , 实现了快速生成metrics指标的能力 , 支持用户自定义指标名称,方便按业务、按分组区分 。和exporter算力共享 , 每个实例 limit 2C/4G就可满足一个物理机的采集任务 。
3.event 事件流持久化
哈啰云原生架构落地实践

文章插图
实现了事件收集器,K8S全资源类型listwatch收集,同时把所有的event全量打印,针对特别的一些探针做了Response信息返回的打印 。
4.logs 日志平台
哈啰云原生架构落地实践

文章插图
把系统日志和业务日志等通过一些消费和采集的收集器,推送到kafka,最终聚合成一个平台 。
5.trace链路
哈啰云原生架构落地实践

文章插图
我们通过traceid查询,tags过滤进行数据检索分析;链路拓扑过滤,只看有错误的链路;采样链路搜索,链路分析 。
6.K8S稳定性关注的指标
哈啰云原生架构落地实践

文章插图
这里把K8S稳定性关注的指标分为五类,原生组件可用性、集群容量水位、集群资源负载、业务异常实例和云平台可用性 。
7.稳定性大盘
哈啰云原生架构落地实践

文章插图
云原生系统内维护的组件系统较多,一个原子管理单元发生问题后可能会影响多个上游链路系统 。快速论证回答组件域当前是否正常,对于故障分析、问题定位有重要意义 。
四、未来的展望规划
未来规划主要分为四部分,一是在离线的深度混部与调优,下一阶段还要持续推进哈啰内部云化中间件的混部进程,聚焦大算力应用的资源编排和成本优化 。
二是数据存储容器化 , 数据库、NoSQL的容器化工作,基于容器Cgroup隔离、以及类K8S资源编排模型的落地 。目前哈啰内部已有部分业务开始生产化,还在持续建设中 。
三是Serverless业务场景模式探索,中后台的算法模型、数据任务job场景有一定的实践,业务大前端BFF层、无代码工程建设上在持续探索 。
四是基于AIOPS&可观测性的智能故障预测,基于时序预测模型能力,探索metrics异常指标提前发现,收敛告警系统误报、漏报问题,提升故障发现、故障定位能力 。
作者丨罗涛
来源丨公众号:哈啰技术(ID:gh_426073316492)

【哈啰云原生架构落地实践】


推荐阅读