Configure a escala automática de pods multidimensional

A escala automática de pods multidimensional liberta-o da escolha de uma única forma de dimensionar os seus clusters. Com a escala automática de pods multidimensional, pode usar a escala horizontal com base na CPU e a escala vertical com base na memória em simultâneo.

Um objeto MultidimPodAutoscalermodifica os pedidos de memória e adiciona réplicas para que a utilização média da CPU de cada réplica corresponda à sua utilização alvo.

Pré-requisitos

Usar a escala automática de pods multidimensional

Este exemplo mostra como criar uma implementação e um objeto MultidimPodAutoscaler para ajustar automaticamente a escala da implementação.

Criar uma implementação

Antes de poder criar um MultidimPodAutoscaler, tem de criar a carga de trabalho que monitoriza. O ficheiro php-apache.yaml especifica um valor para os pedidos de CPU:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 80
        resources:
        # Since MPA does not specify CPU requests, you must specify a request in
        # the Deployment
          limits:
            cpu: 500m
          requests:
            cpu: 200m

Para criar a implementação, aplique o manifesto php-apache.yaml:

kubectl apply -f php-apache.yaml

Criar um MultidimPodAutoscaler

Depois de criar a implementação, pode criar um MultidimPodAutoscalerobjeto. O seguinte manifesto MultidimPodAutoscalerajusta automaticamente o número de réplicas e pedidos de memória com base nos valores especificados.

Para mais informações sobre os campos neste exemplo, consulte a secção Referência da API.

apiVersion: autoscaling.gke.io/v1beta1
kind: MultidimPodAutoscaler
metadata:
  name: php-apache-autoscaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  goals:
    metrics:
    - type: Resource
      resource:
      # Define the target CPU utilization request here
        name: cpu
        target:
          type: Utilization
          averageUtilization: 60
  constraints:
    global:
      minReplicas: 1
      maxReplicas: 5
    containerControlledResources: [ memory ]
    container:
    - name: '*'
    # Define boundaries for the memory request here
      requests:
        minAllowed:
          memory: 1Gi
        maxAllowed:
          memory: 2Gi
  policy:
    updateMode: Auto

Para criar o MultidimPodAutoscaler, aplique o manifesto php-apache-autoscaler.yaml:

kubectl apply -f php-apache-autoscaler.yaml

Visualizar um MultidimPodAutoscaler

Veja todos os objetos MultidimPodAutoscaler com o comando kubectl get:

kubectl get mpa

Eliminar um MultidimPodAutoscaler

Elimine um objeto MultidimPodAutoscaler com o comando kubectl delete:

kubectl delete -f php-apache-autoscaler.yaml

Referência da API

As secções seguintes fornecem informações sobre os campos possíveis que pode adicionar ao seu objeto MultidimPodAutoscaler.

Todos os campos são para apiVersion v1beta1 autoscaling.gke.io.

MultidimPodAutoscaler

MultidimPodAutoscaler é a configuração de um redimensionador automático de pods multidimensional, que gere automaticamente os recursos de pods e a respetiva contagem com base na utilização de recursos histórica e em tempo real.

Campo Tipo Descrição
metadata ObjectMeta Metadados de objetos padrão.
spec MultidimPodAutoscalerSpec O comportamento pretendido do redimensionador automático de pods multidimensional.
status MultidimPodAutoscalerStatus O estado observado mais recentemente do escalador automático de pods multidimensional.

MultidimPodAutoscalerSpec

MultidimPodAutoscalerSpec é a especificação que define o comportamento do redimensionador automático.

Campo Tipo Descrição
ScaleTargetRef autoscaling.CrossVersionObjectReference Uma referência que aponta para um recurso de destino a dimensionar (com o subrecurso Scale).
Goals *MultidimGoals Objetivos que o escalador automático de pods multidimensional tenta alcançar e manter.
Constraints *MultidimConstraints Descreve as restrições para o dimensionamento automático. As restrições superam os objetivos. Se as restrições bloquearem algum objetivo, este não é alcançado. Por exemplo, atingir o número máximo de réplicas impede o aumento da escala, mesmo que as réplicas possam precisar de ser aumentadas.
Policy *MultidimPolicy A política permite-lhe especificar como as recomendações são aplicadas.

MultidimGoals

MultidimGoals são objetivos que o escalador automático de pods multidimensional tenta alcançar.

Campo Tipo Descrição
Metrics []MetricSpec Contém a lista de métricas juntamente com o valor pretendido. O escalador automático de agrupamentos multidimensional tenta manter-se próximo dos valores desejados.

MultidimConstraints

MultidimConstraints descrever as restrições da escalabilidade automática. As restrições têm precedência sobre os objetivos.

Campo Tipo Descrição
Global *GlobalConstraints Restrições que se aplicam à aplicação com escalamento automático como um todo.
Pod *PodConstraints Restrições que se aplicam a um único Pods da aplicação segmentada.
ContainerControlledResources []ResourceName Recursos de contentores que devem ser controlados pelo escalador automático. memory é o único valor suportado.
Container []ContainerConstraints Restrições que se aplicam aos contentores dos pods.

ResourceConstraints

ResourceConstraints definir a quantidade mínima e máxima de recursos que pode atribuir a um contentor, um pod ou uma aplicação.

Campo Tipo Descrição
MinAllowed ResourceList Quantidade mínima de recursos que pode atribuir. Se não for indicado, é usado 0.
MaxAllowed ResourceList Quantidade máxima de recursos que pode atribuir. Se não for indicado, não existem limites para a quantidade máxima de recursos.

GlobalConstraints

GlobalConstraints definem as restrições que se aplicam à aplicação no seu conjunto. Estas restrições incluem o número de réplicas ou a quantidade total de recursos.

Campo Tipo Descrição
MinReplicas *Int32 Quantidade mínima de réplicas que a aplicação pode ter. Se não for indicado, é usado 1.
MaxReplicas *Int32 Quantidade máxima de réplicas que a aplicação pode ter. Se não for indicado, não existem limites para a quantidade máxima de réplicas.
Requests *ResourceConstraints Quantidade mínima e máxima de recursos que uma aplicação pode pedir, somada em todos os agrupamentos.

PodConstraints

PodConstraints define a quantidade mínima e máxima de recursos que um único agrupamento pode pedir, somada em todos os contentores pertencentes ao agrupamento.

Campo Tipo Descrição
Requests *ResourceConstraints Quantidade mínima e máxima de recursos que um único Pod pode pedir, somada em todos os contentores pertencentes ao Pod.

ContainerConstraints

ContainerConstraints são restrições que se aplicam aos contentores dos pods.

Campos Tipo Descrição
Name String Nome do contentor para o qual as restrições são especificadas. Também pode usar * para especificar restrições para todos os contentores num agrupamento.
Requests *ResourceConstraints A quantidade mínima e máxima de recursos que o contentor especificado pode pedir.

UpdateMode

Use UpdateMode para controlar a forma como as recomendações calculadas são aplicadas.

Campos Tipo Descrição
AutoUpdates UpdateMode = "Auto" As atualizações automáticas significam que todas as recomendações do escalador automático podem ser aplicadas em qualquer altura.
AutoUpdates UpdateMode = "Off" As atualizações automáticas significam que as recomendações do escalador automático não são aplicadas.

MultidimPolicy

Campos Tipo Descrição
Update UpdateMode Define como as recomendações devem ser aplicadas. Um valor vazio falha a validação.

MultidimPodAutoscalerStatus

MultidimPodAutoscalerStatus descreve o estado de tempo de execução do escalador automático.

Campos Tipo Descrição
ObservedGeneration *Int64 A geração mais recente observada por este dimensionador automático.
RecommendedPodResources *RecommendedPodResources A quantidade de recursos calculada mais recentemente recomendada pelo escalador automático para os pods controlados.
CurrentReplicas Int32 CurrentReplicas é o número atual de réplicas de pods geridas por este escalador automático, conforme visto pela última vez pelo escalador automático.
DesiredReplicas Int32 DesiredReplicas é o número desejado de réplicas de pods geridas por este escalador automático, conforme calculado mais recentemente pelo escalador automático.
CurrentMetrics []autoscaling.MetricStatus O último estado de leitura das métricas usadas por este escalador automático.
Conditions []metav1.Condition Conditions é o conjunto de condições necessárias para que este redimensionador automático dimensione o respetivo alvo e indica se essas condições são cumpridas ou não.

O que se segue?