K8s的容器化带来了灵活的调度,例如快速的故障自愈,但也带来了诸多复杂度。对于很多客户团队(如infer团队或CTO)而言,成败在于是否能够利用手段构建运维体系。可观测性是构建运维体系的核心能力之一。阿里云容器服务团队在2024年gaterner继续蝉联亚洲唯一的全球领导者象限。根据2022年Forrester分析师报告,可观测是整个容器平台里是最重要的运维核心能力之一,该报告对阿里云容器服务可观测体系给予了很高评价,这也说明了可观测在整个运维体系中具有非常核心的地位。
本次分享主要分为四个部分。首先介绍容器服务的可观测体系概要以及产品能力简要说明;然后重点分享近年在容器场景下一些重点领域的新建设;在近年的场景,我们的客户随着AI的浪潮等等我们也有更多重点临领域新的建设。这些建设在今天的分享也会进行汇报。接着阐述可观测体系如何承担提供数据价值驱动力的责任,我们会通过可观测提供客户ops体系的一些能力。
一、可观测体系在容器场景中的作用及典型应用场景
1.场景一:重保运维场景
阿里云容器服务团队(ACK)为2024年巴黎奥运会提供了基础设施服务,例如网红的子弹时间特效以及多个核心的巴黎奥运会线上系统。底层的运维体系和观测能力由容器服务和可观测团队的观测体系支撑,最终顺利支持了巴黎奥运会线上系统的平稳运行。
除了已有的运维体系和为他们提供稳定的运维系统(包括红绿灯式的低频首屏大盘和基于专家经验沉淀的报警体系),今年还面临实时GPU生产环境的更多异构场景挑战。
2. 场景二:生产级大规模集群稳定性实践
当应用跑在大规模集群上时,集群的稳定性需要经受考验。这是一个头部电商在大促活动时的流量洪峰集群servers的例子,容器化架构增加了一层容器层,也增加了运维复杂度。阿里云容器服务增强了对容器层本身集群稳定性的观测能力进行了增强,尽量做到透明化容器层的运维,让用户在容器层能体会到像在IDC上直接构建应用的透明化体验。此场景对可观测体系的能力挑战是全方位的,包括场景覆盖度以及应急响应时如何快速发现异常。这两个场景是可观测最重要的场景。
3.场景三:业务异常诊断场景
日常业务异常诊断是每天都需要可观测体系帮助解决的问题。这幅图以一个线上系统发生异常时的排查链路为例,通过阿里云可观测体系的多个产品串联,最终通态闭环解决问题的过程图。可以看到,我们从报警出发,经过逃逸或调度快速止血,然后查看网关流量影响的用户SOA,通过多维度的普罗米修斯定位问题实体,再通过SOS的日志分析能力进入业务查看问题所在,最终通过tracing代码级的调整定位问题。大部分问题基本都是代码问题,最终通过修复代码终态的修复问题。此场景对可观测的端到端覆盖能力是一个很大的考验。
二、容器场景可观测体系大图
1.数据分层与对应方案
在左侧的图片里自上而下越上层的越靠近里面的业务,越下层越靠近基础设施。可以看到最上层,如果你用的是如网格或微服务架构,我们提供与业务层直接耦合的tracing方案,支持OPEN以及DPF的无侵入式,甚至具备更强大的profiling能力,还有侵入式的加法agent的APM。中间层也是日常运维比较重要的容器监控层。我们follow flink的开原社区提供标准的普罗米修斯生态,在此基础上增强了普罗米修斯在容器方方面面重点领域的指标监控能力,如AI场景的异构GPU观测能力以及容器存储、容器网络等。操作系统层是今年整个体系中增强的部分。由于生产系统的很多问题可能来自对基础设施的不可控,操作系统是一个非常复杂的系统,需要ninacs专家经验才能诊断的层级。而在容器化架构里,操作系统在容器层之下,通过eBPF技术推出了SysOM类合集的容器监控,可以透出操作系统层的观测信息;在网络场景,也需要内合集端到端的观测能力,通过APGF技术透出了CuxS这一容器场景的网络诊断工具集。最下面是统一了阿里云基础设施层的所有观测能力,提供了所有阿里云统一一致性体验。
2.数据链路与增值场景
通过强大的可观测团队的观测服务能力,提供Tracing、Metric和Login。利用日志服务的强大查询和分析能力以及普罗米修斯的多维度数据实时统计,得到增值场景的价值,发挥观测数据的数据驱动力。
上层两层涉及大家经常遇到的集群和应用的健康状态运维,提供业务的更新分析以及结合K8s的网关控制流量能力进行流量控制和管理。还包括集群本身稳定性的运维,增强了KMS控制面的稳定性,提供更具SOA托管集群保障,让业务流程更安全,同时提供集群的异常诊断和容量规划等功能,帮助客户在业务更新的时候更好的进行容量规划。
集群优化的分析是今年着重建设的增值场景,观测数据可用于分析和决策业务,包括安全性和成本等方面。比如云析产品,当你购买了集群上但我动态调度业务,这些业务所需要的成本都需要观测进行降本增效,最终实现集成的高可靠性。因为容器场景包括了弹性HPAotomation的能力,还可以与资源管控相结合,利用观测数据进行自动化和弹性方面的集成,支持通过自定义Metric或业务Metric进行弹性HPA,根据业务流量弹性实现自动化运营。同时支持观测数据的集成能力,通过观测数据方便客户构建数据消费体系和运维体系。
3.事件体系与指标体系
如图所示的事件是最直接透出异常和报警信息的链路通道。阿里云容器服务团队在社区原有的K8s事件体系上分层增强,让事件体系下探到基础设施层甚至操作系统层。
在指标体系方面,借助强大的阿里云普罗米修斯产品,能够完全统一在普罗米修斯协议上,看到阿里云的整个分层监控,包括容器层上层的业务层、中间件以及云产品层所有指标的统一监控,都可以通过普罗米修斯为用户提供一致的监控。最终使用户看到所有指标均在普罗米修斯。在ACK服务领域所有服务都在普罗米修斯,达到了一致性的用户体验。同时,我们提供开箱级的预支大盘,同领域的预支大盘也迎来升级,通过技术的支持和沉淀,我们继续迭代了不同领域的预支大盘。完全不同但心新买的ACK集群对K8S不熟悉,我们已经为用户提供开箱即用的重点领域观测大盘,为客户提供运维经验的沉淀。
在集群本身的稳定性方面,为ACK托管集群提供SAV保障,通过建设更深层的观测链路,透明化组件的健康状态,通过预制contral大盘让用户清晰看到托管组件的运行状况。
4.tracing体系
tracing体系离用户业务层最近,提供三个档位的解决方案。第一个是无侵入式的eBPF技术,使得你的tracing反感无门槛,它支持低Overcade,无侵入地获取整个集群里所有应用网络和端到端的调用方面的基本容器监控能力。这是我们推出的基于EGPF的急基础应用能力。第二个是全面拥抱Open Telemetry协议,通过Open Tracing协议接入的数据,能通过调用链分析服务接入并监控应用的tracing数据。第三个是新入室且运用更强大Providing能力的APM能力,在jiava如今年新推出的Golang预编译的APM能力,虽侵入代码但提供更强大的profiling应用监控能力。得益于EGPF的技术越来越成熟,已经广泛应用到了产品和产品能力商。EGP能够为我们提供无侵入式而且能够深入到内核层低功耗的应用监控能力。它能支持各类场景包括集群top感知,无侵入的完整观测整个集群的网络状况。以及下钻查看一些细节,比如pod和pid之间进程之间的端到端的网络情况。
三、重点场景ACK可观测能力介绍
今天的重点在于汇报我们在新的时代比如AI浪潮下的一些新的重点场景。如何分离出观测解决方案解决新的问题。
1.AI场景
(1)AI场景的可观测需求
随着容器场景与AI的紧密结合(K8s也是AI的主要架构,如大模型,甚至是AI训练),客户对生产环境的要求从能跑就行变为有高SOAP要求。总结出AI场景对可观测的需求如下:
第一GPU昂贵且坏卡率较高,需要进行坏卡检测,结合容器服务比如节点不能使用,里面的训练任务需要逃逸或调度来保证AI生产环境业务不间断。第二AI训练任务有高时效性要求,如拿到样本需在两小时内出报告结果,需要高时效性高交付能力,对生产环境提出的要求。通过观测能力提供运维体系保障是第二个ai生产系统稳定性保障的强要求。第三,模型调优。在容器场景更复杂的情况下进行模型调优,如何使用GPU进行AI推理,甚至要在这个场景上进行参数的调优,这也是新挑战。
(2)AI场景的解决方案
现在我们能够粗略地讲ai容量架构通过分层,阿里云通过AI套件为客户提供在容器场景上使用AI和GPU调度任务的全套生命周期解决方案。用户可通过AI套件接入任务,同时背后需要配套完备的可观测体系保障环境稳定性。这里我们做到了从底层GPU资源层到SLAMIg或者AM K8S这些解决方案的配套完成能力。
2.GPU场景
(1)容器场景的GPU观测能力
在产品上,提供开箱即用的GPU集群和监控大盘,我们有团队的GPU专家进行GPU换卡及节点上GPU状态的实时坏卡检测,能做到一定程度的任务自愈,对于硬件问题可结合K8s进行重调度或逃逸,迁移或驱逐关键推理任务,保证AI业务不中断。GPU很昂贵,但是我们还提供对GPU资源的容器分账能力以及40多种细致的GPU指标,帮助在容器化场景进行大模型任务的细致调参。
进一步地,我们还提供更精细化的GPU观测能力。通过eBPF技术支持实时的GPU profiling,提供无侵入式轻量级且低Overhead的GPU任务profile能力,贯穿宿主基层、内核、Cuda、NCCL以及上层的patach。帮助数据科学家快速诊断GPU任务运行时的异常耗时。接下来是GPUprofiling的时序耗时图,从底层到HIGHTACH上层,中间包括cudda,可以看到在某个时刻大模型任务,如impoch到几十个突然卡住或者是缓慢的根源。
3.容器网络场景
(1)容器网络问题的挑战
容器网络问题的定位流程长,时间跨度大,对网络经验要求高,且存在网络问题现场易消失等情况,是团队经手的最复杂场景。专家也需要花费很多时间帮助解决线上用户网络的问题。
(2)容器网络场景的解决方案
团队推出了K8S网络问题诊断工具集KubeSKoop,在容器服务产品里通过latersport组件为用户提供能力。它能解决容器网络联通不通的问题,kubeskoop提供端到端全链路覆盖的联通性检查能力。由于容器服务的架构非常复杂,所以他需要做到端到端的网络联通性覆盖的检查,同时利用阿里云普罗米修斯产品,可把网络监控的数据切片式存储,通过历史数据访问回溯,能够还原当时网络问题的现场,甚至绘制出整个集群当时的网络拓扑关系图,解决容器网络问题现场丢失的窘境。对于网络延迟,在联通性检查的基础的基础上,能通过端到端的联通性检查进一步进行网络延时的探查和具体位置诊断。对于抓包问题,由于k8s容器场景的特殊性,抓包需要分布式在多个节点上并行进行,kubeskoop提供了在容器场景上完整端到端抓包以及还原网络传输调用完整链路的诊断能力。此工具基于eBPF技术,是今年在cogcom香港场上发布的kubeskoop通过EGPF技术,低功耗内核级网络诊断工具。
4.容器存储场景
(1)容器存储的问题与需求
容器存储在容器场景中经常遇到问题,如写入IO等异常导致存储异常,需要对观测能力提出要求以帮助诊断。还包括容量规划和生产环境的存储介质选型问题,以及极端场景高吞吐量的性能优化需求。
(2)容器存储场景的解决方案
通过CSI统一的容器标准接入方案统一了各种容器介质的接入,同时实现CSI的增强,提供统一和增强的监控和观测能力。通过普罗米修斯和SSK8S事件,结合日志服务提供了全套统一的普罗米修斯和事件日志的增强来支持上层有状态的存储方案的容器存储监控能力。
对于多集训的AI训练对各种容器存储的IO有非常高吞吐量需求消耗,大规模的存储计算也对此又非常高的要求,而我们增强的实践观测能力能观测到毛刺或高层流量,帮助进行存储介质和方案的选型。
去年和操作系统团队提供了CSO内核机的观测能力,经过一年打磨解决了很多容器化问题,如内存黑洞。比如JAVA很容易产生超出JAVAM的JAVACATH,导致POTAM,通过一年的打磨现在CSO已经解决了很多线上客户容器化问题。通过CCM的内存和内合集的内存剖析,能清晰看到内核的消耗来源,结合codinated混布方案能更精细化地无侵入管理内存,帮助解决容器化上的内存问题。
5.多集群架构场景
(1)多集群架构的管理问题与需求
多集群架构是一个趋势,ACK万舰队提供了多集训多云的统一管理方式,但也面临结构复杂后管理的问题。
(2)多集群架构场景的解决方案
提供统一的Global View监控大盘以及统一的成本分析。很多多云架构都面对复杂结构后的管理问题。例如极客汽车通过多集群的ACK万键进行统一的成本分析,实现了25%的总量资源用量减少。
四、数据驱动能力与未来展望
以上已经汇报了容器场景端到端的数据链路建设,现在讲述这些数据的具体用途。其实他们是非常宝贵的财富,我们希望通过数据驱动力发挥它的价值帮助用户去建立自己的OPS体系。
1.成本方面
阿里云的finops已经发布两年,是发挥可观测数据价值的典型场景。帮助多家头部客户进行降本增效,取得了较好效果。finops套件通过整体的集群和下钻到集群比如pod力度的观测大盘,并通过分析找到里集群的浪费,帮助里集群进行降本增效,提供优化方案,包括节点和节省计划的推荐,实现科学的降本增效。
2.其他方面
这些功能可能在某一个控制台的角落,但是无需出现异常的时候我们如何去查找。因为我们正在建设可观测下一个时代的产品。我们会结合AI助手。也就是容器集合可观测驱动力结合容器服务团队沉淀的专家经验通过通义千问作为强大的智能引擎得到了ai助手2.0,也就是以后不需要在每个复杂的数据盘里找某一数据,直接通过cht ops就能得知集群的问题所在以及如何解决问题。它会告诉你现在哪个指标有问题,目前的集群的状态,通过这样的交互模式在非常短的交互周期内回答你的问题。发现你的异常缩短MTTR。这是今年提供的全生命周期的覆盖,包括之前的诊断和巡检以及事后异常的分析,可观测体系的数据还可用于其他方面,如保障业务的安全性等。
3.未来展望:AI助手的应用
通过一年上线,AI助手解决线上问题的方案采纳率已达40%以上,在某些诊断场景结合专家经验,根因定位率可达70%以上,这得益于底层强大的可观测体系和有价值的数据才能达到如此高的数据。