Compreender as configurações do scaler

Concluído

A versão v2 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 scaleUp, que definem como o HPA se comporta ao reduzir e ao aumentar a escala.

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

Chave Tipo Descrição
estabilizaçãoWindowSeconds Int O período em que o HPA procura métricas para calcular o estado desejado. O valor padrão para scaleDown é cinco minutos e não há janela de estabilização para scaleUp.
selecionarPolítica cadeia de caracteres 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 objeto HPAScalingPolicy é definido como um objeto com as seguintes chaves:

Chave Tipo Descrição
tipo string Tipo de política, pode ser Percent ou Pods.
valor Int Valor da apólice.
segundosPeríodo Int 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 política de scaleDown 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 dimensionar de cada vez através da definição de uma política scaleUp, 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% das vagens existentes, arredonda este número para cima e compara-o com o valor fixo de sete vagens. Como o selectPolicy está definido como Max, ele pega o maior número desses dois números e aplica essa política e, em seguida, aguarda periodSeconds antes de aplicar qualquer política novamente.

Por exemplo, digamos que o site esteja a funcionar com 18 pods e, em seguida, tenha 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 pods na segunda regra, que é 7. Como a chave selectPolicy 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 crescimento chegou a 25 vagens, o cálculo é feito novamente. 30% de 25 vagens é 7,5 (arredondado para 8), que é maior do que 7. Agora, a HPA cria oito novos pods e espera 60 segundos antes de aumentar novamente.

Verifique os seus conhecimentos

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?