A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基于Kubernetes实现云上的自动运维

随着业务量的增多,应用的压力越来越大,这时就需要调整应用的部署量来应对高并发。但是业务量并非一成不变的,当业务量减少时,应用部署过多反而成为一种资源的浪费,这时需要减少部署量来降低资源的损耗。在传统的运维过程中,离不开人为的操作,同时启动量的多少对于运维人员来说也不能准确把控。幸运的是Kubernetes提供了容器的弹性伸缩功能,通过对容器的cpu、内存、并发量等监控,实现容器的自动伸缩,极大的简化了运维的操作难度、节省了人员开支和资源损耗。

Horizontal Pod Autoscaler

Horizontal Pod Autoscaling,简称HPA, Kubernetes通过HPA的设定,实现了容器的弹性伸缩功能。对于Kubernetes中的POD集群来说,HPA可以实现很多自动化功能,比如当POD中业务负载上升的时候,可以创建新的POD来保证业务系统稳定运行,当POD中业务负载下降的时候,可以销毁POD来减少资源的浪费。

HPA最早版本(autoscaling/v1)仅支持CPU作为可监控的度量标准。当前版本HPA处于测试阶段(autoscaling/v2beta1)支持内存和其他自定义指标。

当前的弹性伸缩的指标包括:

  • CPU
  • 内存
  • 并发数
  • 包传输大小

HPA控制器默认每隔30秒就会运行一次,一旦创建的HPA,我们就可以通过命令查看获取到的当前指标信息

$ kubectl get hpa NAME -n NAMESPACE
  • 1

同样如果要查看HAP的事件,也可通下面的命令查看

$ kubectl describe hpa NAME -n NAMESPACE
  • 1
样例apiVersion: autoscaling/v2beta1kind: HorizontalPodAutoscalermetadata:  name: hpa-name  namespace: my-namespacespec:  scaleTargetRef:    apiVersion: apps/v1    kind: Deployment  # 基于Deployment进行扩缩    name: deployment-name  # Deployment名  minReplicas: 1   # 最大实例数  maxReplicas: 10   # 最小实例数  metrics:  - type: Resource    resource:      name: cpu      targetAverageUtilization: 50  # CPU阈值设定50%  - type: Pods    pods:      metricName: packets-per-second      targetAverageValue: 1k   # 每秒数据量  - type: Object    object:      metricName: requests-per-second      target:        apiVersion: extensions/v1beta1        kind: Ingress        name: main-route      targetValue: 10k   # 每秒请求量

弹性伸缩容错处理
  • HPA通过heapster或自定义RESTClient获取到当前的指标信息如CPU,会对HPA设定值进行比较后,进行扩容或缩容,使当前值尽量向其设定值靠近。同时为避免业务的不稳定,弹性伸缩增加了等待时间,当进行扩或缩后,HPA将进行一段时间的等待,这段时间不会进行弹性伸缩。对于扩容,等待时间为3分钟,而缩容,等待时间为5分钟。
【转载】原文地址:https://blog.csdn.net/u013690521/article/details/81033931

5 个回复

倒序浏览
回复 使用道具 举报
奈斯
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
优秀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马