Kubernetes HPA Controller工作原理
来源:互联网 发布:监控软件流量 编辑:程序博客网 时间:2024/06/08 14:45
HPA Controller 介绍
关于Kubernetes Horizontal Pod Autoscaler(简称HPA)的概念和使用介绍,请参考以下官方文档链接,在这里我不再赘述。
- https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/horizontal-pod-autoscaler.md
- https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/walkthrough/
- http://blog.kubernetes.io/2016/07/autoscaling-in-kubernetes.html
- http://markswanderingthoughts.nl/post/148836326495/building-your-own-horizontal-pod-autoscaler-for
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工作原理
- Kubernetes HPA Controller源码分析
- Kubernetes ReplicaSet 和 HPA 介绍
- Kubernetes ReplicaSet 和 HPA 介绍
- Kubernetes系列07:Controller Manager原理分析
- kubernetes 1.2版弹性伸缩HPA
- Kubernetes ResourceQuota Controller内部实现原理及源码分析
- Kubernetes核心原理(二)之Controller Manager
- kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
- kubernetes之hpa(HorizontalPodAutoscaling)扩展实现memory支持
- 支持内存HPA Memory指标的Kubernetes的部署
- Kubernetes GC 工作原理解析 in v1.3
- Kubernetes PodGC Controller源码分析
- kubernetes之kube-policy-controller
- Kubernetes Job Controller源码分析
- kubernetes 1.6版以上1.8版以下弹性伸缩HPA-Memory
- Kubernetes Scheduler原理解析
- Kubernetes原理简介
- CPU、MCU、MPU、DSP的区别和介绍
- 两字母交叉最少问题
- unity之协同程序
- 4-3 简单求和
- POJ1001
- Kubernetes HPA Controller工作原理
- 添加 ros工作路径
- 浅谈TDD、BDD与ATDD软件开发 (敏捷开发模式)
- 软件工程--3.需求工程概述
- 素数生成算法
- eclipse 各种版本spring插件安装
- html&css实验4.css子女选择器
- 【Spring学习17】bean作用域:单例和多例
- Myeclipse工程项目报错connot be resolved to a type