了解缩放器配置

已完成

v2 版本的 HPA API 支持使用 YAML 文件中名为 spec.behavior 的新键微调其行为的某些方面。 它接受另外两个键 scaleDownscaleUp,这两个键分别定义了 HPA 在纵向缩减和扩展时的行为。

其中每个键都允许使用以下值:

密钥 类型 说明
stabilizationWindowSeconds int HPA 查找其中的指标以计算所需状态的时段。 scaleDown 的默认值为 5 分钟,scaleUp 没有稳定时段。
selectPolicy 字符串 选择使用的策略类型,此值可以是 MinMaxDisabled
策略 HPAScalingPolicy 的数组 一组可能应用的策略。

HPAScalingPolicy 对象被定义为具有以下键的对象:

密钥 类型 说明
type 字符串 策略类型,可以是 PercentPods
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 秒。

知识检查

1.

什么是稳定时段?

2.

SelectPolicies 有哪三个值?

3.

何时应定义 HPA 的行为?