70 lines
2.5 KiB
YAML
70 lines
2.5 KiB
YAML
# Horizontal Pod Autoscaler - 水平Pod自动扩缩容配置
|
||
# 根据 CPU 和内存使用率自动调整 Pod 副本数量
|
||
apiVersion: autoscaling/v2
|
||
kind: HorizontalPodAutoscaler
|
||
metadata:
|
||
name: data-engine-hpa # HPA 资源名称
|
||
namespace: default # 命名空间
|
||
spec:
|
||
# 指定要自动扩缩容的目标 Deployment
|
||
scaleTargetRef:
|
||
apiVersion: apps/v1
|
||
kind: Deployment
|
||
name: data-engine
|
||
|
||
# 副本数量范围
|
||
minReplicas: 1 # 最小副本数:始终保持至少 1 个 Pod 运行
|
||
maxReplicas: 10 # 最大副本数:防止无限扩容,最多扩展到 10 个 Pod
|
||
|
||
# 扩缩容触发指标(满足任一条件即触发)
|
||
metrics:
|
||
# CPU 使用率指标
|
||
- type: Resource
|
||
resource:
|
||
name: cpu
|
||
target:
|
||
type: Utilization
|
||
averageUtilization: 70 # 当所有 Pod 的平均 CPU 使用率超过 70% 时触发扩容
|
||
|
||
# 内存使用率指标
|
||
- type: Resource
|
||
resource:
|
||
name: memory
|
||
target:
|
||
type: Utilization
|
||
averageUtilization: 80 # 当所有 Pod 的平均内存使用率超过 80% 时触发扩容
|
||
|
||
# 扩缩容行为策略
|
||
behavior:
|
||
# 向上扩容策略(快速响应负载增加)
|
||
scaleUp:
|
||
stabilizationWindowSeconds: 60 # 稳定窗口期:60 秒内只基于最高需求决策,防止抖动
|
||
policies:
|
||
# 策略1:按固定数量扩容
|
||
- type: Pods
|
||
value: 2 # 每次最多增加 2 个 Pod
|
||
periodSeconds: 60 # 每 60 秒评估一次
|
||
|
||
# 策略2:按比例扩容
|
||
- type: Percent
|
||
value: 50 # 每次最多增加当前副本数的 50%
|
||
periodSeconds: 60 # 每 60 秒评估一次
|
||
|
||
selectPolicy: Max # 选择两个策略中扩容幅度更大的方式(更激进)
|
||
|
||
# 向下缩容策略(保守缩容,避免频繁波动)
|
||
scaleDown:
|
||
stabilizationWindowSeconds: 300 # 稳定窗口期:300 秒(5分钟),比扩容更保守
|
||
policies:
|
||
# 策略1:按固定数量缩容
|
||
- type: Pods
|
||
value: 1 # 每次最多减少 1 个 Pod
|
||
periodSeconds: 60 # 每 60 秒评估一次
|
||
|
||
# 策略2:按比例缩容
|
||
- type: Percent
|
||
value: 25 # 每次最多减少当前副本数的 25%
|
||
periodSeconds: 60 # 每 60 秒评估一次
|
||
|
||
selectPolicy: Min # 选择两个策略中缩容幅度更小的方式(更保守)
|