Compreender as configurações do scaler
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 scaleUp
ao 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 scaleDown scaleUp . |
selecionarPolítica | string | O tipo selecionado de política a ser usado, esse valor pode ser Min , Max ou 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.