Compreender as configurações do scaler
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 , Max ou 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.