Kubernetes HPA Controller工作原理

HPA Controller 介绍


关于Kubernetes Horizontal Pod Autoscaler(简称HPA)的概念和使用介绍,请参考以下官方文档链接,在这里我不再赘述。

HPA Controller 工作原理

  • K8s通过HPA,基于获取到的metrics(CPU utilization, custom metrics) value,对rc, deployment管理的pods进行自动伸缩。

截止到Kubernetes 1.6,Release特性中仅支持CPU utilization这一resource metrics,对custom metrics的支持目前仍在alpha阶段,请知晓。

  • HPA Controller周期性(默认每30s一次,可通过kube-controller-manager的flag--horizontal-pod-autoscaler-sync-period进行设置)的调整对应的rc, deployment中的replicas数量,使得指定的metrics value能匹配用户指定的target utilization value。

  • 在每个HPA Controller的处理周期中,kube-controller-manager都去查询HPA中定义的metrics的utilization。查询方式根据metric类型不同而不同:

    • 如果metric type是resource metrics,则通过resource metrics API查询。
    • 如果metric type属于custom metrics,则通过custom metrics API查询。
  • 计算伸缩比例算法:

    • 对于resource metrics,比如CPU,HPA Controller获取HPA中指定的metrics,如果HPA中设定了target utilization,则HPA Controller会将获取到的metrics除于对应的容器的resource request值作为监测到的当前pod的resource utilization。如此计算完所有HPA对应的pods后,对该resource utilization values取平均值。最后将平均值除于定义的target utilization,得到伸缩的比例。

      注意:如果HPA对应的某些pods中的容器没有定义对应的resource request,则HPA不会对这些pods进行scale。

    • 对于custome metrics,HPA Controller的伸缩算法几乎与resource metrics一样,不同的是:此时是根据custome metrics API查询到的metrics value对比target metics value计算得到的,而不是通过utilization计算得到的。

  • HPA与rc, deployment, pod的关系如下图所示。

    • HPA通过Scale sub-resource接口,对RC和Deployment的replicas进行控制。
    • HPA最终对Pod副本数的控制终归还是通过RC和Deployment控制器。

HPA Controller有两种方式获取metrics:

  • direct Heapster access: 用于对resource metrics的监控,需要提前在kube-system namespace中部署Heapster。
  • REST client access: 用于对custom metrics的监控,需要设置kube-controller-manager的--horizontal-pod-autoscaler-use-rest-clients flag为true。
本文转自开源中国-Kubernetes HPA Controller工作原理
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/679222

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。