kubernetes Horizontal Pod Autoscaler

作者: root007 分类: 未分类 发布时间: 2019-10-10 15:18

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

首先必须确保集群中已经安装metrics-server的组件,否则无法获取集群内资源数据,无法进行以下操作。 关指标可以从metrics.k8s.io、custom.metrics.k8s.io或external.metrics.k8s.io等API获取。 kubectl api-versions |grep metrics

原理:

水平Pod自动缩放器图

通过集群内的资源监控系统(metrics-server已经代替heaspter ),
Horizo​​ntal Pod Autoscaler根据观察到的CPU利用率(或在其他应用程序提供的Beta支持下,根据观察到的CPU利用率)自动缩放复制控制器,部署,副本集或状态集中的Pod数量

通过kubectl api-versions可以看到,目前有3个版本:

autoscaling/v1                 #只支持通过cpu为参考依据,来改变pod副本数
autoscaling/v2beta1       # 1.8以上 支持通过cpu、内存、连接数以及用户自定义的资源指标数据为参考依据。
autoscaling/v2beta2       #同上,小的变动

kubectl explain hpa   ##默认查询到的是autoscaling/v1版本
kubectl explain hpa --api-version=autoscaling/v2beta1   #可以使用--api-version指明版本

HPA多个指标和自定义指标


配置HPA 当cpu=80或者内存=80自动扩容 最小4个pod 最大8个pod

HPA yaml文件:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name:tv-web-hpa
  namespace: prod
spec:
  minReplicas: 4         ##最小1个副本
  maxReplicas: 8         ##最大8个副本
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: tv-web-dm
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 80  ##注意此时是根据使用率,也可以根据使用量:targetAverageValue
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 80  ##注意此时是根据使用率,也可以根据使用量:targetAverageValue targetAverageValue: 100Mi
指示	描述
apiVersion: autoscaling/v2beta1	autoscaling正在使用的Kubernetes API组的版本。此示例清单使用beta版本,因此启用了按CPU和内存进行缩放。
name: hello-world	表示HPA正在为hello-word部署执行自动扩展。
minReplicas: 1	表示正在运行的最小副本数不能低于1。
maxReplicas: 10	表示部署中的最大副本数不能超过10。
targetAverageUtilization: 50	表示当平均运行的Pod使用超过其请求CPU的50%时,部署将扩展Pod。
targetAverageValue: 100Mi	表示当平均运行的Pod使用超过100Mi的内存时,部署将扩展Pod。

发表评论

电子邮件地址不会被公开。 必填项已用*标注