系统架构面临的三大挑战,看 Kubernetes 监控如何解决?

简介: 随着 Kubernetes 的不断实践落地,我们经常会遇到负载均衡、集群调度、水平扩展等问题。归根到底,这些问题背后都暴露出流量分布不均的问题。那么,我们该如何发现资源使用,解决流量分布不均问题呢?今天,我们就借助三个具体场景聊聊这一问题以及相应的解决方案。

作者|炎寻

大家好,我是阿里云云原生应用平台的炎寻,很高兴能与大家继续分享 Kubernetes 监控系列公开课。前两期公开课我们讲到了 Vol.1《通过 Kubernetes 监控探索应用架构,发现预期外的流量》、Vol.2《如何发现 Kubernetes 中服务和工作负载的异常》。

 如何使用 Kubernetes 监控的拓扑来探索应用架构,使用产品采集的监控数据配置告警来发现服务性能问题。今天我们将进行第三讲《使用 Kubernetes 监控发现资源使用,流量分布不均匀的问题》,大家可以钉钉搜索钉群 31588365,加入 Kubernetes 监控答疑群进行交流

随着 Kubernetes 的不断实践落地,我们经常会遇到越来越多问题,诸如负载均衡、集群调度、水平扩展等问题。归根到底,这些问题背后都暴露出流量分布不均的问题。那么,我们该如何发现资源使用,解决流量分布不均问题呢?今天,我们就借助三个具体场景聊聊这一问题以及相应的解决方案。

系统架构面临的挑战一:负载均衡

图片 1.png

通常来说,对于一个业务系统,架构会有很多层,每层包含很多组件,比如服务接入、中间件、存储,我们希望每个组件的负载都是均衡的,这样性能和稳定性都是最高的,但在多语言多通信协议场景下,快速发现以下问题具备一定难度,比如:

  • 应用服务器处理的请求是否均匀?
  • 应用服务器对中间件服务实例的访问流量是否均匀?
  • 数据库各个分库分表实例读写流量是否均匀?

我们在实际工作实践中会遇到的典型场景就是负载不均衡,线上的流量转发策略或者流量转发组件自身有问题,导致应用服务各个实例接收到的请求量不均衡,部分实例处理的流量显著高于其他节点,导致这部分实例的性能相对于其他实例来说显著恶化,那么路由到这部分实例上的请求无法得到及时的响应,造成系统整体的性能和稳定性降低。

图片 2.png

除了服务端不均匀场景之外,云上用户大多使用云服务实例,在实践中会出现应用服务各个实例处理的流量均匀,但访问云服务实例的节点出现流量不均匀,导致云服务实例整体性能和稳定性下降。通常在应用运行时整体链路梳理和特定问题节点上下游分析时,会进入该场景。

那么,我们如何快速发现问题、解决问题呢? 针对这一问题,我们可以从服务负载、请求负载这两个方面对客户端、服务端进行问题发现,判断各个组件实例服务负载和对外请求负载是否均衡。

(1)服务端负载

图片 3.png

对于服务端负载均衡问题排查,我们需要了解服务详情,对任意特定的 Service,Deployment,DaemonSet,StatefulSet 进行更具针对性的排查。通过 Kubernetes 监控服务详情功能,我们可以看到 Pod 列表部分会列出后端的所有 Pod,在表格中我们列出了每个 Pod 在选择时间段内的请求数聚合值和请求数时序,通过对请求数一列进行排序,我们可以清楚地看到后端的流量是否均匀。

图片 4.png

(2)客户端负载

对于客户端负载均衡问题排查,Kubernetes 监控提供集群拓扑功能,对于任意特定的 Service,Deployment,DaemonSet,StatefulSet,我们都可以查看其关联的拓扑,当选定关联关系之后,点击表格化会列出所有与问题实体关联的网络拓扑,表格每一项都是应用服务节点对外请求的拓扑关系,在表格中我们会展示每一对拓扑关系在选择时间段内的请求数聚合值和请求数时序,通过对请求数一列进行排序,可以清楚地看到特定节点作为客户端对特定的服务端访问是否流量均匀。

系统架构面临的挑战二:集群调度

在 Kubernetes 集群部署场景下,将 Pod 分发到某个节点的过程称之为调度,对于每个 Pod 来说,其调度过程包含了“根据过滤条件找候选节点”以及“找最好的节点”两个步骤,“根据过滤条件找候选节点”除了根据 Pod 和 node 的污点,忍受关系来过滤节点,还有一点非常重要的就是根据资源预留的量来过滤,比如节点的 CPU 只有 1 核的预留,那么对于一个请求 2 核的 Pod 来说该节点将被过滤。“找最好的节点”除了根据 Pod 和 node 的亲和性来选择,一般是在过滤出来的节点里面选择最空闲的。

图片 5.png

基于上面的理论,我们在实践过程中经常会遇到一些问题:

  • 为什么集群资源使用率很低却无法调度 Pod?
  • 为什么部分节点资源使用率显著高于其他节点?
  • 为什么只有部分节点资源无法调度?

我们在实际工作实践中会遇到的典型场景就是资源热点问题,特定节点频繁发生 Pod 调度问题,整个集群资源利用率极低但是无法调度 Pod。如图,我们可以看到 Node1、Node2 已经调度满了 Pod,Node3 没有任何 Pod 调度上去,这个问题对跨 region 容灾高可用,整体的性能都有影响。我们通常在 Pod 调度失败会进入到该场景。

那么,我们该如何处理呢?

图片 6.png

对于 Pod 无法调度的问题排查,我们通常应该关注到下面三个要点:

  • 节点有 Pod 数量调度上限
  • 节点有 CPU 请求调度上限
  • 节点有内存请求调度上限

图片 7.png

Kubernetes 监控提供的集群节点列表展示以上三个要点。通过排序去查看各个节点是否均匀来查看资源热点问题。比如,某个节点 CPU 请求率接近 100%,那么就意味着任何对 CPU 有请求的 Pod 都无法调度到该节点上,如果说只有个别节点的 CPU 请求率接近 100%,其他节点都十分空闲,就需要检查一下该节点的资源容量和 Pod 分布,进一步排查问题。

除了节点有资源热点问题之外,容器也有资源热点问题。如图,对于一个多副本服务来说,其容器的资源使用分布也可能有资源热点问题,主要体现在 CPU 和内存使用上,CPU 在容器环境中是可压缩资源,达到上限之后只会限制,不会对容器本身生命周期造成影响,而内存在容器环境中是不可压缩资源,达到上限之后会出现 OOM,由于每个节点运行的时候虽然处理的请求量一致,但是不同请求不同参数导致的 CPU 和内存消耗可能不一样,那么这样会导致部分容器的资源出现热点,对生命周期和自动扩缩容都会造成影响。

针对容器的资源热点问题,通过理论分析,我们需要关注的要点如下:

  • CPU 是可压缩资源
  • 内存是不可压缩资源
  • Requests 用于调度
  • Limits 用于运行时资源限制隔离

图片 8.png

Kubernetes 监控在服务详情的 Pod 列表展示以上四个要点,支持排序,通过查看各个 Pod 是否均匀来查看资源热点问题,比如某个 Pod CPU 使用/请求率接近 100%,那么就意味着可能触发自动扩缩容,如果说只有个别 Pod 的 CPU 使用/请求率接近 100%,其他节点都十分空闲,就需要检查处理逻辑,进一步排查问题。

系统架构面临的挑战三:单点问题

对于单点问题而言,其本质就是高可用问题。高可用问题解法只有一个,就是冗余,多节点,多 region,多 zone,多机房,越分散越好,越冗余越好。除此之外,在流量增长,组件压力增大的情况下,系统各组件是否可以水平扩展也成为一个重要的议题。

图片 9.png

单点问题,应用服务只有最多 1 个节点,当该节点因为网络或者其他问题中断,无法通过重启解决时,系统崩溃,与此同时,因为只有一个节点,当流量增长超过一个节点的处理能力时,系统整体的性能表现会严重恶化,单点问题会影响系统的性能和高可用能力,针对该问题,Kubernetes监控支持查看 Service,Daemonset,StatefulSet,Deployment 的副本数,快速定位单点问题。 

通过上面的介绍我们可以看到 Kubernetes 监控可以从服务端,客户端多视角支持多语言多通信协议场景下的负载均衡问题排查,与此同时容器,节点,服务的资源热点问题排查,最后通过副本数检查和流量分析支持单点问题排查。在后续的迭代过程中,我们会将这些检查点作为场景开关,一键开启之后自动检查,报警。

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 数组你都掰扯不明白,还敢说精通 JavaScript ?| 赠书

作者 | 哪吒来源 | CSDN博客最近小编在看文章的时候,总有很多刚刚入门的小白说精通这个,精通那个技术,更有意思的是,最近看到一则简历上说精通 JavaScript ,聊一聊发现数组还不明白,就对外说精通~所以今天小…

基于消息队列 RocketMQ 的大型分布式应用上云实践

简介: Apache RocketMQ 作为阿里巴巴开源的支撑万亿级数据洪峰的分布式消息中间件,在众多行业广泛应用。在选型过程中,开发者一定会关注开源版与商业版的业务价值对比。 那么,今天就围绕着商业版本的消息队列 RocketMQ和开源版本 …

Gartner发布2022年政府行业主要技术趋势:XaaS、数字化、超自动化等

作者 | Gartner研究副总裁 Bettina Tratz-Ryan Gartner杰出研究副总裁John Kost Gartner高级研究总监 相斌斌 供稿 | Gartner 政府领导人和民选官员在2022年不仅要面对巨大的挑战,还要把握疫情与经济复苏应对措施、不断变化的政治需求和持续数字化变革所带来的机遇…

RedShift到MaxCompute迁移实践指导

简介: 本文主要介绍Amazon Redshift如何迁移到MaxCompute,主要从语法对比和数据迁移两方面介绍,由于Amazon Redshift和MaxCompute存在语法差异,这篇文章讲解了一下语法差异 1.概要 本文档详细介绍了Redshift和MaxCompute之间SQL…

数字农业WMS库存操作重构及思考

简介: 数字农业库存管理系统在2020年时,部门对产地仓生鲜水果生产加工数字化的背景下应运而生。项目一期的数农WMS中的各类库存操作均为单独编写。而伴随着后续的不断迭代,这些库存操作间慢慢积累了大量的共性逻辑:如参数校验、幂…

数字营销行业大数据平台云原生升级实战

简介: 加和科技CTO 王可攀:技术是为业务价值而服务 王可攀 加和科技CTO 本文将基于加和科技大数据平台升级过程中面临的问题和挑战、如何调整数据平台架构以及调整后的变化,为大家介绍数字营销行业大数据平台云原生升级实战经验。主要分为以…

场景模型驱动自动化测试在盒马的探索及实践

简介: 盒马业务有如下几个特点:线上线下一体化、仓储配送一体化、超市餐饮一体化、经营作业一体化、多业态与平台化。在以上的种种原因,生鲜及物流体验是盒马的特点,但仓储配送一体化作业中,如何能更高效的提升测试效率…

基于 KubeVela 的 GitOps 交付

简介: KubeVela 是一个简单、易用、且高可扩展的云原生应用管理和交付平台,KubeVela 背后的 OAM 模型天然解决了应用构建过程中对复杂资源的组合、编排等管理问题,同时也将后期的运维策略模型化,这意味着 KubeVela 可以结合 GitOp…

BCS2022大会将提前至5月 网络安全产业空间扩容将成热门话题

年度网络安全的盛会即将开启。 2022年3月30日,2022年北京网络安全大会(BCS2022)新闻发布会在北京奇安信安全中心召开,宣布2022年北京网络安全大会“提档”至5月24日至26日,并与北辰集团国家会议中心达成战略合作&#…

基于 Istio 的全链路灰度方案探索和实践

简介: 本文介绍的基于“流量打标”和“按标路由” 能力是一个通用方案,基于此可以较好地解决测试环境治理、线上全链路灰度发布等相关问题,基于服务网格技术做到与开发语言无关。同时,该方案适应于不同的7层协议,当前已…

图像检索在高德地图POI数据生产中的应用

简介: 高德通过自有海量的图像源,来保证现实世界的每一个新增的POI及时制作成数据。在较短时间间隔内(小于月度),同一个地方的POI 的变化量是很低的。 作者 | 灵笼、怀迩 来源 | 阿里技术公众号 一 背景 POI 是 Poin…

Redis HyperLogLog 是什么?这些场景使用它~

作者 | 就是码哥呀来源 | 码哥字节在移动互联网的业务场景中,数据量很大,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时对这个数据集合做统计。统计一个 APP 的日活、月活数;统计一个页面的每天被多少个不…

matlab三角形分割,MATLAB 2014b及以上版本中带有画家渲染器的三角形拆分补丁

在解决实际问题之前,这是一个值得怀疑的解决方法:对角线只是三角形之间的空白区域,所以我们看到的是补丁后面的白色空间.愚蠢的想法:让我们用匹配的颜色填充该空间而不是白色.为此,我们将复制所有对象,并通过一个tiiiiny位来抵消新对象.码:hi…

网易云音乐音视频算法的 Serverless 探索之路

简介: 网易云音乐最初的音视频技术大多都应用在曲库的数据处理上,基于音视频算法服务化的经验,云音乐曲库团队与音视频算法团队一起协作,一起共建了网易云音乐音视频算法处理平台,为整个云音乐提供统一的音视频算法处理…

小小的 likely 背后却大有玄机!

作者 | 张彦飞allen来源 | 开发内功修炼今天我给大家分享一个内核中常用的提升性能的小技巧。理解了它对你一定大有好处。在内核中很多地方都充斥着 likely、unlikely 这一对儿函数的使用。随便揪两处,比如在 TCP 连接建立的过程中的这两个函数。//file: net/ipv4/t…

阿里云马涛:因云进化的基础软件

简介: 基础软件的云原生化。 编者按:2021 年10 月20 日,在2021 云栖大会云计算产业升级峰会上,阿里云“因云而生”云原生心智大图正式发布,包含弹性计算、云网络、基础产品、基础设施、操作系统、云安全、开放平台等7个…

阿里云ECI如何6秒扩容3000容器实例?

简介: 2021年云栖大会现场,阿里云工程师演示了在6秒时间内成功启动3000个ECI,并全部进入到Running状态。本文将为你揭开阿里云ECI是如何做到极速扩容的。 引言 根据最新CNCF报告,有超过90%的用户在生产环境使用容器,…

巧用友盟+U-APM 实现移动端性能优化—启动速度

简介: 移动端性能对用户体验、留存有着至关重要的影响,作为开发者是不是被这样吐槽过,“这个 APP 怎么这么大?”、“怎么一直在 APP 封面图转悠,点不进去”、“进入详情效果有些卡”、“用 4G 使用你们的 APP&#xff…

第25版 OpenStack Yoga 已发布

OpenStack社区今日正式发布第25版-Yoga,该版本通过支持先进的硬件技术如SmartNIC DPUs,优化与云原生软件如Kubernetes、Prometheus等的集成以及减少技术债等方式来保持OpenStack内核的稳定性与可靠性。 OpenStack作为开源基础设施即服务(Iaa…

项目实战总结以及接入U-APM

简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线、系统函数、编程范式、数据结构等导致的。即便是较有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”&#xf…