了解缩放器配置
v2
版本的 HPA API 支持使用 YAML 文件中名为 spec.behavior
的新键微调其行为的某些方面。 它接受另外两个键 scaleDown
和 scaleUp
,这两个键分别定义了 HPA 在纵向缩减和扩展时的行为。
其中每个键都允许使用以下值:
密钥 | 类型 | 说明 |
---|---|---|
stabilizationWindowSeconds | int | HPA 查找其中的指标以计算所需状态的时段。 scaleDown 的默认值为 5 分钟,scaleUp 没有稳定时段。 |
selectPolicy | 字符串 | 选择使用的策略类型,此值可以是 Min 、Max 或 Disabled 。 |
策略 | HPAScalingPolicy 的数组 |
一组可能应用的策略。 |
HPAScalingPolicy
对象被定义为具有以下键的对象:
密钥 | 类型 | 说明 |
---|---|---|
type | 字符串 | 策略类型,可以是 Percent 或 Pods 。 |
值 | int | 策略的值。 |
periodSeconds | int | 再次应用此策略前需要等待的时间。 |
使用缩放策略可以微调缩放的工作方式。 例如,可以通过将 scaleDown
策略设置 Disabled
来完全禁用纵向缩减操作,如以下示例所示:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: contoso-website
namespace: hpa-contoso
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contoso-website
minReplicas: 1
maxReplicas: 10
behavior:
scaleDown:
selectPolicy: Disabled
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 20
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 50
还可以通过定义 scaleUp
策略来设置一次横向扩展的副本数,如下所示:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: contoso-website
namespace: hpa-contoso
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contoso-website
minReplicas: 1
maxReplicas: 10
behavior:
scaleUp:
selectPolicy: Max
stabilizationWindowSeconds: 120
policies:
- type: Percent
value: 30
periodSeconds: 60
- type: Pods
value: 7
periodSeconds: 90
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 20
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 50
在此清单中,你将告知 HPA 要查找过去 120 秒的指标,以计算所需状态并获取这些值中的最大值。 完成后,它会计算 30% 的现有 Pod,向上舍入此数字,并将其与 7 个 Pod 的固定值进行比较。 由于 selectPolicy
设置为 Max
,因此会选择这两个值中的较大值并应用该策略,等待 periodSeconds
,然后再次应用任何策略。
例如,假设网站正在运行 18 个 Pod,然后经历持续约 120 秒的峰值。 所需状态的计算方式是计算当前正在运行的 Pod 的 30%,即 5.4(舍入为 6)。 此值与第二个策略中的 Pod 数(即 7)进行比较。 由于 selectPolicy
键已设置为 Max
,因此它使用这两个值中的较大值。 然后,HPA 缩放 7,等待 90 秒,然后再次纵向扩展。 如果峰值持续到 25 个 Pod,则再次执行计算。 25 个 Pod 的 30% 为 7.5(舍入为 8),大于 7。 现在 HPA 会创建 8 个新 Pod,并在再次纵向扩展前等待 60 秒。