深入剖析 Kubernetes
张磊
Kubernetes 社区资深成员与项目维护者
116710 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
再谈开源与社区 (1讲)
结束语 (1讲)
深入剖析 Kubernetes
15
15
1.0x
00:00/00:00
登录|注册

49 | Custom Metrics: 让Auto Scaling不再“食之无味”

HPA configuration
ServiceMonitor for Prometheus Operator
Deploying monitored application and HPA
Creating ClusterRoleBinding
Deploying Custom Metrics APIServer
Deploying Prometheus
Prometheus Adaptor
Aggregator APIServer
HPA configuration
Implementation
Custom Metrics API
Horizontal Pod Autoscaler (HPA)
Obtaining the metrics
Desired metrics for Auto Scaling
Toolkits for creating custom API servers
Effectiveness of Aggregator APIServer
Scalability of Custom Metrics mechanism
ServiceMonitor for Prometheus Operator
Accessing Custom Metrics URL
Testing application with hey tool
Deploying monitored application and HPA
Creating ClusterRoleBinding
Deploying Custom Metrics APIServer
Deploying Prometheus
Kubernetes
Traditional PaaS projects
Reflection
Conclusion
Practical Example
Auto Scaling
Custom Metrics

该思维导图由 AI 生成,仅供参考

你好,我是张磊。今天我和你分享的主题是:Custom Metrics,让 Auto Scaling 不再“食之无味”。
在上一篇文章中,我为你详细讲述了 Kubernetes 里的核心监控体系的架构。不难看到,Prometheus 项目在其中占据了最为核心的位置。
实际上,借助上述监控体系,Kubernetes 就可以为你提供一种非常有用的能力,那就是 Custom Metrics,自定义监控指标。
在过去的很多 PaaS 项目中,其实都有一种叫作 Auto Scaling,即自动水平扩展的功能。只不过,这个功能往往只能依据某种指定的资源类型执行水平扩展,比如 CPU 或者 Memory 的使用值。
而在真实的场景中,用户需要进行 Auto Scaling 的依据往往是自定义的监控指标。比如,某个应用的等待队列的长度,或者某种应用相关资源的使用情况。这些复杂多变的需求,在传统 PaaS 项目和其他容器编排项目里,几乎是不可能轻松支持的。
而凭借强大的 API 扩展机制,Custom Metrics 已经成为了 Kubernetes 的一项标准能力。并且,Kubernetes 的自动扩展器组件 Horizontal Pod Autoscaler (HPA), 也可以直接使用 Custom Metrics 来执行用户指定的扩展策略,这里的整个过程都是非常灵活和可定制的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何利用Custom Metrics来实现Kubernetes的自动扩展功能,突破了Auto Scaling仅限于CPU或内存等资源使用情况的局限。通过Custom Metrics,用户可以根据自定义的监控指标执行自动扩展策略,如根据应用的等待队列长度或特定资源的使用情况进行扩展。文章详细介绍了Custom Metrics的实现原理和具体使用方式,包括部署Prometheus项目、Custom Metrics APIServer以及配置Horizontal Pod Autoscaler(HPA)。通过一个具体的实例,演示了如何利用Custom Metrics实现自动扩展,并介绍了ServiceMonitor对象用于指定被监控Pod的配置。总之,本文为读者提供了一种新的思路和方法来实现Kubernetes的自动扩展功能,深入浅出地介绍了Custom Metrics的概念和实际应用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Kubernetes》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 虎虎❤️
    HPA 通过 HorizontalPodAutoscaler 配置要访问的 Custom Metrics, 来决定如何scale。 Custom Metric APIServer 的实现其实是一个Prometheus 的Adaptor,会去Prometheus中读取某个Pod/Servicce的具体指标值。比如,http request的请求率。 Prometheus 通过 ServiceMonitor object 配置需要监控的pod和endpoints,来确定监控哪些pod的metrics。 应用需要实现/metrics, 来响应Prometheus的数据采集请求。 留给自己的思考,Pod 的 metrics endpoint 如何对应到http_requests 这个指标的?
    2018-12-16
    20
  • 单朋荣
    张老师,伸缩是不是写的简单了点,毕竟伸缩也是核心功能之一。主要想了解下,hpa伸缩的判定算法的替换方法,vpa预测算法的常见类型及优缺点,ca在大规模场景下实现的原理,ar的应用场景等;还有就是自定义伸缩(prometheus)时间戳优化原理、方法,及最后微服务下伸缩的结合方法等。可不可以从伸缩的数据分类、获取手段、处理算法、伸缩流程、调度算法、故障处理反馈机制等方面,再列几章讲一下,谢谢张老师!!
    2020-05-25
    1
    13
  • William
    请问能否实现跨node的水平扩展?
    2018-12-24
    2
    7
  • DJH
    请教一个问题:对于多POD的应用(如多副本的deployment),假设配置了根据CPU使用率进行自动水平伸缩(HPA),那么HPA执行水平伸缩的依据是各个POD中CPU使用率平均值还是最高值?另外HPA探测到多少次CPU高于设置值才会开始伸缩?CPU使用率探测的频率又是多久一次呢?
    2018-12-14
    2
    6
  • 剑走偏锋
    就为了做自定义业务指标的监控,我们也做了水晶桥(Crystal Bridge)项目开源在github上了。思路是自采通过annotations公开的promethus指标,然后推往prometheus GW,最后再由上层prometheus来采集。 今天这种让HPA通过自定义指标来完成扩容/缩容操作的技术设计的确很棒,学习了,感谢。
    2019-01-04
    3
  • manatee
    请问下老师,扩容好理解就是加容器,那缩容的话如何实现呢,怎么保证在删除容器的时候容器上的请求不受影响呢
    2019-12-18
    4
    1
  • stan
    请张老师帮忙解惑,对于多实例应用,采集 service暴露的指标才是正确的做法,这句怎么理解?采集每个pod对应的指标不好吗,service后面对应的api无法确认来自哪个pod吧?数据可能忽大忽小,如果采集到一个刚刚hpa的pod指标,数据可能更小,这样应该没有采集每个pod,然后平均值来的更精确吧?类似对于cpu 的hpa,就是采集的每个pod的指标然后做平均值
    2018-12-20
    1
    1
  • 源子陌
    “所以说,我们在对前面的 Custom Metircs URL 进行访问时,会看到值是 501484m,这里的格式,其实就是 milli-requests,相当于是在过去两分钟内,每秒有 501 个请求。”——这个 501484m 是怎么折算成 501 QPS的,老师能再解释下嘛?
    2022-05-24
  • 陈斯佳
    第四十七课:Custom Metrics: 让Auto Scaling不再“食之无味” 很多 PaaS 项目中的Auto Scaling,即自动水平扩展的功能,只能依据某种指定的资源类型执行水平扩展,比如 CPU 或者 Memory 的使用值。凭借强大的 API 扩展机制,Custom Metrics 已经成为了 Kubernetes 的一项标准能力。并且,Kubernetes 的自动扩展器组件 Horizontal Pod Autoscaler (HPA), 也可以直接使用 Custom Metrics 来执行用户指定的扩展策略,这里的整个过程都是非常灵活和可定制的。Kubernetes 里的 Custom Metrics 机制,也是借助 Aggregator APIServer 扩展机制来实现的。这里的具体原理是,当你把 Custom Metrics APIServer 启动之后,Kubernetes 里就会出现一个叫作custom.metrics.k8s.io的 API。而当你访问这个 URL 时,Aggregator 就会把你的请求转发给 Custom Metrics APIServer 。而 Custom Metrics APIServer 的实现,其实就是一个 Prometheus 项目的 Adaptor。
    2021-11-08
  • 罗峰
    Hpa里面配置了对哪些deploy等进行水平伸缩、伸缩的范围,对应的指标的阈值。 指标是普罗主动拉取的,需要个servicemonitor告诉普罗哪个指标拉取哪个pod。 这样指标有了,需扩展的k8资源确定了,ha功能也就可以了。
    2021-06-01
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部