Políticas CronHPA
Visão geral
Há picos de tráfego previsíveis e imprevisíveis para alguns serviços. Para esses serviços, CronHPA do CCE permite que você dimensione recursos em períodos fixos. Ele pode trabalhar com políticas HPA para ajustar periodicamente o escopo de dimensionamento HPA, implementando o dimensionamento de carga de trabalho.
CronHPA pode ajustar periodicamente os números máximo e mínimo de pods na política HPA ou ajustar diretamente o número de pods de uma Implementação.
O seguinte é um exemplo YAML de CronHPA:
apiVersion: autoscaling.cce.io/v2alpha1 kind: CronHorizontalPodAutoscaler metadata: name: ccetest namespace: default spec: scaleTargetRef: # Associate an HPA policy or Deployment. apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler name: hpa-test rules: - ruleName: "scale-down" schedule: "15 * * * *" # takes a Cron format string, for example, 0 * * * * or @hourly. targetReplicas: 1 # Number of target pods disable: false - ruleName: "scale-up" schedule: "13 * * * *" targetReplicas: 6 disable: false
Campo |
Descrição |
---|---|
apiVersion |
Versão da API. O valor é fixado em autoscaling.cce.io/v2alpha1. |
kind |
Tipo de API. O valor é fixado em CronHorizontalPodAutoscaler. |
metadata.name |
Nome de uma política CronHPA. |
metadata.namespace |
Namespace ao qual a política CronHPA pertence. |
spec.scaleTargetRef |
Especifica o objeto de dimensionamento de CronHPA. Os seguintes campos podem ser configurados:
CronHPA suporta políticas HPA ou Implementações. Para mais detalhes, veja Usar CronHPA para ajustar o escopo de dimensionamento de HPA e Usar CronHPA para ajustar diretamente o número de pods de Implementação. |
spec.rules |
Regra da política de CronHPA. Várias regras podem ser adicionadas. Os seguintes campos podem ser configurados para cada regra:
|
Pré-requisitos
O complemento HPA de CCE avançado da v1.2.13 ou posterior foi instalado.
Usar CronHPA para ajustar o escopo de dimensionamento de HPA
CronHPA pode periodicamente expandir/reduzir pods em políticas HPA para satisfazer serviços complexos.
HPA e CronHPA associam objetos de dimensionamento usando o campo scaleTargetRef. Se uma Implementação for o objeto de dimensionamento para CronHPA e HPA, as duas políticas de dimensionamento serão independentes uma da outra. A operação realizada posteriormente sobrescreve a operação realizada anteriormente. Como resultado, o efeito de escala não atende à expectativa.
Quando o CronHPA é compatível com a política HPA, o campo scaleTargetRef em CronHPA deve ser definido para a política HPA, e o campo scaleTargetRef na política HPA deve ser definido para Implementação. Desta forma, o CronHPA ajusta os números máximo e mínimo de pods na política HPA em um horário fixo e o dimensionamento agendado é compatível com o dimensionamento automático.
- Crie uma política HPA para a Implementação.
apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: hpa-test namespace: default spec: maxReplicas: 10 # Maximum number of pods minReplicas: 5 # Minimum number of pods scaleTargetRef: # Associate a Deployment. apiVersion: apps/v1 kind: Deployment name: nginx targetCPUUtilizationPercentage: 50
- Crie uma política CronHPA e associe-a à política HPA criada em 1.
apiVersion: autoscaling.cce.io/v2alpha1 kind: CronHorizontalPodAutoscaler metadata: name: ccetest namespace: default spec: scaleTargetRef: # Associate the HPA policy apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler name: hpa-test rules: - ruleName: "scale-down" schedule: "15 * * * *" # Running time and period of a job. For details, see Cron, for example, 0 * * * * or @hourly. targetReplicas: 1 # Number of target pods disable: false - ruleName: "scale-up" schedule: "13 * * * *" targetReplicas: 11 disable: false
Quando CronHPA e HPA são usados juntos, as regras de CronHPA entram em vigor com base na política HPA. CronHPA usa HPA para realizar operações na Implementação. Compreender os seguintes parâmetros pode entender melhor o princípio de funcionamento do CronHPA.
- targetReplicas: número de pods definido para CronHPA. Quando o CronHPA entra em vigor, esse parâmetro ajusta o número máximo ou mínimo de pods nas políticas HPA para ajustar o número de pods de Implementação.
- minReplicas: número mínimo de pods de Implementação.
- maxReplicas: número máximo de pods de Implementação.
- replicas: número de pods em uma Implementação antes da política CronHPA entrar em vigor.
Quando a regra de CronHPA entra em vigor, o número máximo ou mínimo de pods é ajustado comparando o número de targetReplicas com o número real de pods e combinando o número mínimo ou máximo de pods na política HPA.
Figura 1 mostra possíveis cenários de dimensionamento. Os exemplos a seguir detalham como CronHPA modifica o número de pods em HPAs.
Cenário
Descrição do cenário
Cronhpa
(targetReplicas)
Implementação
(replicas)
HPA
(minReplicas / maxReplicas)
Resultados
Descrição da operação
Cenário 1
targetReplicas < minReplicas ≤ replicas ≤ maxReplicas
4
5
5/10
HPA: 4/10
Implementação: 5
Quando o valor detargetReplicas for menor que o de minReplicas:
- Altere o valor de minReplicas.
- O valor de replicas não requer alteração.
Cenário 2
targetReplicas = minReplicas ≤ replicas ≤ maxReplicas
5
6
5/10
HPA: 5/10
Implementação: 6
Quando o valor de targetReplicas é igual ao de minReplicas:
- O valor de minReplicas não requer alteração.
- O valor de replicas não requer alteração.
Cenário 3
minReplicas < targetReplicas < replicas ≤ maxReplicas
4
5
1/10
HPA: 4/10
Implementação: 5
Quando o valor de targetReplicas for maior que o de minReplicas e menor que o de replicates:
- Altere o valor de minReplicas.
- O valor de replicas não requer alteração.
Cenário 4
minReplicas < targetReplicas = replicas < maxReplicas
5
5
1/10
HPA: 5/10
Implementação: 5
Quando o valor de targetReplicas for maior que o de minReplicas e igual ao de replicates:
- Altere o valor de minReplicas.
- O valor de replicas não requer alteração.
Cenário 5
minReplicas ≤ replicas < targetReplicas < maxReplicas
6
5
1/10
HPA: 6/10
Implementação: 6
Quando o valor de targetReplicas for maior que o de replicates e menor que o de maxReplicas:
- Altere o valor de minReplicas.
- Altere o valor de replicas.
Cenário 6
minReplicas ≤ replicas < targetReplicas = maxReplicas
10
5
1/10
HPA: 10/10
Implementação: 10
Quando o valor de targetReplicas for maior que o de replicates e igual ao de maxReplicas:
- Altere o valor de minReplicas.
- Altere o valor de replicas.
Cenário 7
minReplicas ≤ replicas ≤ maxReplicas < targetReplicas
11
5
5/10
HPA: 11/11
Implementação: 11
Quando o valor de targetReplicas é maior que o de maxReplicas:
- Altere o valor de minReplicas.
- Altere o valor de maxReplicas.
- Altere o valor de replicas.
Usar CronHPA para ajustar diretamente o número de pods de Implementação
CronHPA ajusta as Implementações associadas separadamente para ajustar periodicamente o número de pods de Implementação. O método é o seguinte:
apiVersion: autoscaling.cce.io/v2alpha1 kind: CronHorizontalPodAutoscaler metadata: name: ccetest namespace: default spec: scaleTargetRef: # Associate a Deployment. apiVersion: apps/v1 kind: Deployment name: nginx rules: - ruleName: "scale-down" schedule: "08 * * * *" # Running time and period of a job. For details, see Cron, for example, 0 * * * * or @hourly. targetReplicas: 1 disable: false - ruleName: "scale-up" schedule: "05 * * * *" targetReplicas: 3 disable: false