码迷,mamicode.com
首页 > Web开发 > 详细

Kubernetes Horizontal Pod Autoscaling

时间:2019-11-18 22:11:33      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:chart   extension   pil   metrics   des   gen   github   bsp   自动化   

HPA介绍

Horizo??ntal Pod Autoscaler基于观察到的CPU利用率(或借助自定义指标 支持,基于其他一些应用程序提供的指标)自动缩放复制控制器,部署或副本集中的Pod数量 请注意,自动伸缩不适用于无法缩放的对象,例如DaemonSets。

Horizo??ntal Pod Autoscaler被实现为Kubernetes API资源和控制器。该资源确定控制器的行为。控制器会定期调整复制控制器或部署中副本的数量,以使观察到的平均CPU利用率与用户指定的目标相匹配。

简单的理解:自动水平伸缩,是指运行在k8s上的应用负载(POD),可以根据资源使用率进行自动扩容、缩容;我们知道应用的资源使用率通常都有高峰和低谷,所以k8s的HPA特性应运而生;它也是最能体现区别于传统运维的优势之一,不仅能够弹性伸缩,而且完全自动化!

工作原理图

技术图片

 

 下面我们进行实验:

# 创建deploy和service

$ kubectl run php-apache --image=pilchard/hpa-example --requests=cpu=200m --expose --port=80

技术图片

# 创建autoscaler
$ kubectl autoscale deploy php-apache --cpu-percent=50 --min=1 --max=10

技术图片

# 等待3~5分钟查看hpa状态
$ kubectl get hpa php-apache

技术图片

# 增加负载 
$ kubectl run --rm -it load-generator --image=busybox /bin/sh 
$ while true; do wget -q -O- http://php-apache; done; 

技术图片

# 等待约5分钟查看hpa显示负载增加,且副本数目增加
# 注意k8s为了避免频繁增删pod,对副本的增加速度有限制
# 实验过程可以看到副本数目从1到4到8到10,大概都需要4~5分钟的缓冲期
$ kubectl get hpa php-apache -w

技术图片

# 清除负载,CTRL+C 结束上述循环程序,稍后副本数目变回1

 技术图片

 通过注解annotations添加自动伸缩例子:

Deployment / StatefulSet:

 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   name: example
   labels:
   annotations:
     hpa.autoscaling.banzaicloud.io/minReplicas: "1"
     hpa.autoscaling.banzaicloud.io/maxReplicas: "3"
     cpu.hpa.autoscaling.banzaicloud.io/targetAverageUtilization: "70"

chart模板:https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-hpa.yaml

参考:

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

 

Kubernetes Horizontal Pod Autoscaling

标签:chart   extension   pil   metrics   des   gen   github   bsp   自动化   

原文地址:https://www.cnblogs.com/Dev0ps/p/11885662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!