Compreender as configurações do scaler

Concluído

A v2 versão da API HPA permite ajustar alguns aspetos de seu comportamento usando uma nova chave no arquivo YAML chamada spec.behavior. Ele aceita duas outras chaves: scaleDown e , que definem como o HPA se comporta ao reduzir e scaleUpao aumentar a escala.

Os seguintes valores são permitidos para cada uma dessas chaves:

Key Type Description
estabilizaçãoWindowSeconds número inteiro O período em que o HPA procura métricas para calcular o estado desejado. O valor padrão para é cinco minutos e não há janela de estabilização para scaleDownscaleUp.
selecionarPolítica string O tipo selecionado de política a ser usado, esse valor pode ser Min, Maxou Disabled.
políticas matriz de HPAScalingPolicy Uma série de políticas possíveis a serem aplicadas.

O HPAScalingPolicy objeto é definido como um objeto com as seguintes chaves:

Key Type Description
tipo string Tipo de política, pode ser Percent ou Pods.
valor número inteiro Valor da apólice.
períodoSegundos número inteiro Tempo necessário para que esta política possa ser aplicada novamente.

As políticas de dimensionamento permitem ajustar a maneira como o dimensionamento funciona. Por exemplo, você pode desabilitar completamente a operação de redução de escala definindo uma scaleDown política como Disabled, conforme mostrado no exemplo a seguir:

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

Você também pode definir o número de réplicas para dimensionamento de cada vez definindo uma scaleUp política, como esta:

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

Neste manifesto, você está dizendo ao HPA para procurar os últimos 120 segundos de métricas para calcular o estado desejado e obter o mais alto desses valores. Uma vez que o faça, calcula 30% dos pods existentes, arredonda este número para cima e compara-o com o valor fixo de sete pods. Como o está definido como Max, ele pega o selectPolicy maior número desses dois números e aplica essa política, em seguida, aguarda periodSeconds antes de aplicar quaisquer políticas novamente.

Por exemplo, digamos que o site esteja rodando com 18 pods e, em seguida, experimente um pico que dura cerca de 120 segundos. O estado desejado é calculado calculando 30% dos pods em execução atuais, que é 5,4 (arredondado para 6). Este valor é comparado com o número de cápsulas na segunda política, que é 7. Como a selectPolicy chave está definida como Max, ela usa o valor maior desses dois valores. Em seguida, o HPA é dimensionado em 7 e aguarda 90 segundos antes de aumentar novamente. Se o pico continuou até 25 vagens, o cálculo é feito novamente. 30% de 25 vagens é 7,5 (arredondado para 8), que é maior que 7. Agora, a HPA cria oito novos pods e espera 60 segundos antes de aumentar novamente.

Verifique o seu conhecimento

1.

O que é a janela de estabilização?

2.

Quais são os três valores para selectPolicies?

3.

Quando você deve definir o comportamento para o seu HPA?