天天百科

容器缺乏高效集群健康评估(网易自身分析自动化运维工具体系建设)

2023-07-03 分类:养生资讯

TIPS:本文共有 2425 个字,阅读大概需要 5 分钟。

作为Kubernetes托管维护团队,网易轻舟需要通过技术手段提高稳定性,提供SLA保障能力,更多为客户解决实际问题,达到降低成本效用。

——摘要

“2020 GIDC全球互联网数据大会——华东站”于2020年12月22日正式召开,活动围绕“5G+新基建,打开全球化“数据经济”新时代、新基建趋势下的“云网”新格局、边缘云生态建设与算力资源重构、虚拟化容器云生态建设趋势”四大主题,架设互联网平台深度发展的平台与桥梁。

在此次大会上,来自网易数帆旗下网易轻舟团队的技术专家黄久远出席本次大会,并就《网易容器集群故障自动发现及诊断运维体系建设》为题,以实际部署中出现的情况为例,分享了网易在维护容器集群时所遇到的一些实例以及痛点问题。

首先,黄久远先介绍了网易轻舟目前在整个平台的落地情况,网易轻舟在网易内部的所有互联网均已实现落地,其中包括网易传媒、网易云音乐、网易严选等业务的支撑。

由于互联网业务的复杂性,平台的应用场景也相对比较复杂,面对场景的不同,网易的容器集群也会有多样化的情况出现,例如在线推理、离线训练、离/在线混合部署等等。

这对于Kubernetes集群配置的管理就会显得比较复杂,较高的复杂度,如果单纯依靠人力进行运维,很容易带来错误,在整个运维团队的内部,这将是一个面临的比较严重的问题。

所以对于互联网团队以及网易自身多年累积的经验来看,维护Kubernetes集群时经常遇到以下痛点:

1、不同业务差异化配置维护成本高

2、SRE 人力不足

3、缺乏高效的集群健康性评估手段

4、业务用户容器化落地初期较多问题需要定位

作为Kubernetes托管维护团队,网易轻舟需要通过技术手段提高稳定性,提供SLA保障能力,更多为客户解决实际问题,达到降低成本效用。

由此,网易轻舟设计诞生了一套Kubernetes集群问题故障自动诊断发现的系统。

自动诊断系统主要达到的收益包括两个方面:

(1)服务质量优化,提升SLA保障能力;

(2)团队能力沉淀,通过技术能力将代码固化,之后即便人员流动,代码和文档仍然可以一直持续不断地向外输出。

网易内部将这套系统称之为Kube Diagnoser。

Kube Diagnoser的架构主要分为两块:Controller相当于Kube Diagnoser的Master组件,相当于Operator,可以用以监听APIServer,Opreator中所针对的CRD资源叫做Diagnosis,是对故障诊断的抽象。

故障诊断Diagnosis会解析字段,例如Pod字段、NodeName字段,并将这部分字段分发到实际执行故障诊断和恢复的Agent下进行处理。Agent以DaemonSet的形式部署在整个集群中。

其中的Controller能够实现很多接口的接入,比如社区常用的Prometheus接口,通过配置普罗米修斯的报警模板,将已触发的报警发向Controller,通过匹配模板产生相应的分类,借助Diagnoser故障处理请求进行处理。若用户想对JAVA应用的Pod进行诊断,可以自己创建符合要求的Diagnoser,触发对某个Pod内Java业务的诊断流程,获取CPU和内存的使用情况帮助用户进行分析

随后,黄久远还列举了一些目前已经上线的主要功能,主要包括两方面:

(1)内核、Kubernetes、Docker的问题诊断

黄久远表示,容器诊断是困扰许多团队的问题,以前团队内部使用的是Docker18.06.3版本的Docker,还有1.2.8版本的Container B/L,这两个版本有一些比较经典的Bug,比如死锁问题、Event丢失问题等等。导致容器删不掉,排查会花费比较多的时间。

(2)常用诊断命令封装

基于用户的痛点,将JAVA进程及GO语言程序性能Profile封装,用户可以通过创建Diagnoser抽象触发业务进程的诊断。通过算法对集群健康评估,评估集群内的Pod、Node、Deployment、StatefulSet、DaemonSet等资源并进行打分。

黄久远表示,往往排查问题的时候,Pod在某个Node上起不来,排查往往需要经历几个阶段:登录节点、敲命令,收集节点状态和内核参数等等。根据状态、参数进行分析,通过其中的关键字确定什么问题,尤其是已知问题。

将很多问题形成总结,通过某几个函数建立堆栈,通过某几个函数的关键字、关键指标就大致可以了解问题在哪个方向,最后确认问题。通过问题的定义,在节点上通过命令的形式,做恢复处理。例如,针对Docker18.06版本里比较经典的导致容器无法正常删除的几个Bug,就形成自动诊断抽象。Diagnosis就是诊断CRD结构,实现对诊断流程的抽象。

其后,黄久远还以Assigned Information Collectors预制信息采集器的信息采集;利用Profilers抽象,定义对JAVA的应用诊断;利用社区故障发现手段例如普罗米修斯触发报警;对集群关键核心的Node资源、Workload资源进行集群评分,以实现故障的自动化运维。

黄久远表示,目前的网易Kube Diagnoser,已经能够在大多数大规模生产环境中上线使用,解决了许多团队之前遇到的很多问题,比如往常许多业务发现较为复杂的问题需要专家解决,但如今,可能不需要人解决,自动化运维就处理了。

黄久远强调,网易轻舟的平台价值,在于帮助运维团队业务用户容器化落地过程中服务能力的提升:

1、推动SLA 保障的人力成本的降低

2、帮助集群稳定性的提高

3、帮助用户解决 Java 应用容器化后遇到的实际问题

能够提供故障自动发现及诊断运维的闭环:

1、实现 Prometheus 报警到故障信息采集、诊断和恢复的自动化

2、沉淀对 Kubernetes、Docker、内核等已知问题的解决方案以及能力

在未来,也将进一步集成 Perf、eBPF 等技术实现更丰富的故障发现以及诊断功能并实现社区开源。

如果觉得《容器缺乏高效集群健康评估(网易自身分析自动化运维工具体系建设)》对你有帮助,请点赞、收藏,并留下你的观点哦!

阅读剩余内容
网友评论
相关阅读
小编推荐