Advanced Horizontal Pod Autoscaler(简称:AHPA)是kubernetes中HPA的功能加强. 在兼容原生HPA功能基础上,增长预测、执行模式配置、缩容控制等功能。用户可使用AdvancedHorizontalPodAutoscaler对支持scale功能的对象(例如Deployment等)进行弹性伸缩。nginx
HPA在使用方面存在不便之处:算法
AHPA功能分为两部分:controller和algorithm。api
针对规律性明显的应用,通常有以下特征:
bash
上图中,红线表示应用的入网流量(qps),蓝线表示容器数。从图中蓝色能够看出,在qps到来前一段时间(好比:60min)已经开始备容,在qps达到峰值前资源已经ready,下降流量高峰来临时刻备容应用抖动带来的风险;在qps峰值事后,资源缓慢回收(缩容速率线性递减),避免产生浪费。经过上图能够看出,针对规律性明显应用,提早备容,缓慢缩容,最终可以保证应用稳定性的前提下达到成本优化目的。架构
方式一:进入“容器服务”->"市场"->"应用目录"->"ack-advanced-horizontal-pod-autoscaler"进行安装,以下图:
app
方式二:优化
helm install ack-advanced-horizontal-pod-autoscaler -n ahpa复制代码
helm delete ahpa复制代码
参数说明默认值ahpa.replicaCountAHPA controller 副本数1
ahpa.imageTagAHPA 镜像tag.v1.0
ahpa.imagePullPolicyAHPA 镜像拉取策略Always
ahpa.ALGORITHM_SERVICE_AHPA_SVC_HOSTAHPA 算法依赖svcalgorithm-service
algorithm.replicaCount算法服务 副本数1
algorithm.ports算法服务 端口号5000
algorithm.imageTag算法服务 镜像tag1.0
algorithm.imagePullPolicy算法服务 镜像拉取策略Always
alibabaCloudMetricsAdapter.needcreate是否安装alibaba-cloud-metric-adaptertrue
crds.needcreate是否安装crdstrue
rbac.needcreate是否配置rbactrue
ui
apiVersion: autoscaling.alibabacloud.com/v1
kind: AdvancedHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: ahpa-sample-original-support
namespace: kube-system
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: nginx-deploy
selector:
matchLabels:
app: nginx-deploy
minReplicas: 2
maxReplicas: 5
# 扩缩模式,scalingUpOnly:只扩模式,observer:观察模式,auto:扩缩模式
scaleMode: "auto"
# 单位为分钟,预测将来60分钟所需副本数
forecastWindow: 60
metrics:
- type: External
external:
metric:
name: k8s_workload_cpu_util
selector:
matchLabels:
k8s.cluster.id: "xxx"
k8s.workload.name: "nginx-deploy"
k8s.workload.type: "Deployment"
k8s.workload.namespace: "kube-system"
k8s.period: "100"
target:
type: Value
value: 60复制代码
参数说明默认值scaleMode扩缩模式,scalingUpOnly:只扩模式,observer:观察模式,auto:扩缩模式"observer"forecastWindow预测将来时间窗口(分钟),0表示不使用预测功能0阿里云
Advanced Horizontal Pod Autoscaler可针对周期性规律强的应用进行提早备容,减小扩容资源申请、应用启动耗时带来的容量风险,同时更好的支持扩缩模式和扩缩控制,增长了自动扩缩的业务的可用性。spa
本文为云栖社区原创内容,未经容许不得转载。