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
- Versão 1.19.4-gke.1700 ou posterior do cluster do GKE.
 - Para clusters Standard, ative a escala automática vertical de pods no seu cluster. A escala automática vertical de pods já está ativada nos clusters do Autopilot.
 
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?
- Saiba mais sobre a configuração do dimensionamento automático de pods horizontal.
 - Saiba mais sobre a configuração do dimensionamento automático de pods vertical.