概述目标:基于业务自定义指标进行自动伸缩,使用稳定窗口与不同上/下行策略减少抖动,提升成本与性能均衡。适用:请求队列长度、处理速率、并发数等业务驱动伸缩场景。核心与实战Prometheus Adapter指标暴露(示意):apiVersion: v1

kind: ConfigMap

metadata: { name: adapter-config, namespace: custom-metrics }

data:

config.yaml: |

rules:

- seriesQuery: 'worker_inflight_jobs{namespace!="",pod!=""}'

resources:

overrides:

namespace: { resource: "namespace" }

pod: { resource: "pod" }

name:

matches: "worker_inflight_jobs"

as: "worker_inflight_jobs"

metricsQuery: 'sum(rate(worker_inflight_jobs[1m])) by (namespace)'

HPA v2配置:apiVersion: autoscaling/v2

kind: HorizontalPodAutoscaler

metadata:

name: worker-hpa

namespace: prod

spec:

scaleTargetRef:

apiVersion: apps/v1

kind: Deployment

name: worker

minReplicas: 2

maxReplicas: 50

metrics:

- type: Pods

pods:

metric:

name: worker_inflight_jobs

target:

type: AverageValue

averageValue: 100

behavior:

stabilizationWindowSeconds: 300

scaleUp:

policies:

- type: Percent

value: 100

periodSeconds: 60

selectPolicy: Max

stabilizationWindowSeconds: 0

scaleDown:

policies:

- type: Percent

value: 50

periodSeconds: 60

selectPolicy: Max

stabilizationWindowSeconds: 300

示例应用与验证:kubectl apply -f hpa.yaml

kubectl describe hpa worker-hpa

指标与副本:kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/prod/pods/*/worker_inflight_jobs" | jq

kubectl get hpa worker-hpa -n prod -w

验证与监控抖动控制:通过`stabilizationWindowSeconds`与不同上下行策略控制频繁伸缩;观察副本变化。指标质量:确保Adapter规则正确映射与聚合;监控数据新鲜度与误触发。成本与容量:结合节点资源与队列滞后设定目标值与上限,防止过度伸缩。常见误区指标过小粒度导致抖动;应聚合至命名空间或Deployment层级。未配置稳定窗口导致在负载波动下频繁缩容扩容;需合理设置。忽视下行策略,缩容过快导致任务积压;需限制缩容速度。结语通过HPA v2自定义指标与行为策略可实现业务驱动的稳定伸缩,避免抖动并兼顾成本与性能。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部