Configurazione della scalabilità automatica del pod multidimensionale

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

La scalabilità automatica di pod multidimensionali ti consente di scegliere un unico modo per scalare i tuoi cluster. Con la scalabilità automatica del pod multidimensionale, puoi utilizzare contemporaneamente la scalabilità orizzontale basata sulla CPU e la scalabilità verticale basata sulla memoria.

Un oggetto MultidimPodAutoscaler modifica le richieste di memoria e aggiunge repliche in modo che l'utilizzo medio della CPU di ciascuna replica corrisponda all'utilizzo target.

Prerequisiti

Utilizzo della scalabilità automatica pod multidimensionale

Questo esempio mostra come creare un deployment e un oggetto MultidimPodAutoscaler per scalarlo automaticamente.

Creazione di un deployment

Prima di poter creare un MultidimPodAutoscaler, è necessario creare il carico di lavoro che monitora. Il seguente file, php-apache.yaml, specifica un valore per le richieste 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: k8s.gcr.io/hpa-example
        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

Per creare il deployment, applica il file manifest php-apache.yaml:

kubectl apply -f php-apache.yaml

Creazione di un gestore della scalabilità automatica multidimPod

Dopo aver creato il deployment, puoi creare un oggetto MultidimPodAutoscaler. Il seguente file manifest MultidimPodAutoscaler regola automaticamente il numero di repliche e richieste di memoria in base ai valori specificati.

Per ulteriori informazioni sui campi in questo esempio, consulta la sezione Riferimento 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

Per creare MultidimPodAutoscaler, applica il manifest php-apache-autoscaler.yaml:

kubectl apply -f php-apache-autoscaler.yaml

Visualizzazione di un gestore della scalabilità automatica multidimPod

Visualizza tutti gli oggetti MultidimPodAutoscaler con il comando kubectl get:

kubectl get mpa

Eliminazione di un multidimPodAutoscaler

Elimina un oggetto MultidimPodAutoscaler mediante il comando kubectl delete:

kubectl delete -f php-apache-autoscaler.yaml

Riferimento API

Le seguenti sezioni forniscono informazioni sui possibili campi che puoi aggiungere all'oggetto MultidimPodAutoscaler.

Tutti i campi sono per apiVersion v1beta1 autoscaling.gke.io.

Gestore della scalabilità automatica multidimPod

MultidimPodAutoscaler è la configurazione per un gestore della scalabilità automatica pod multidimensionale, che gestisce automaticamente le risorse pod e il relativo conteggio in base all'utilizzo storico e in tempo reale delle risorse.

Campo Tipo Descrizione
metadata ObjectMeta Metadati degli oggetti standard.
spec MultidimPodAutoscalerSpec Il comportamento desiderato del gestore della scalabilità automatica del pod multidimensionale.
status MultidimPodAutoscalerStatus Lo stato osservato più di recente del gestore della scalabilità automatica del pod multidimensionale.

MultidimPodAutoscalerSpec

MultidimPodAutoscalerSpec è la specifica che definisce il comportamento del gestore della scalabilità automatica.

Campo Tipo Descrizione
ScaleTargetRef autoscaling.CrossVersionObjectReference Un riferimento che punta a una risorsa di destinazione da scalare (con la sottorisorsa Scalabilità).
Goals *MultidimGoals Obiettivi che il gestore della scalabilità automatica dei pod multidimensionali tenta di raggiungere e mantenere.
Constraints *MultidimConstraints Descrive i vincoli per la scalabilità automatica. I vincoli superano i tuoi obiettivi. Se i vincoli bloccano una parte, l'obiettivo non verrà raggiunto. Ad esempio, raggiungere il numero massimo di repliche impedisce un'ulteriore scalabilità anche se potrebbe essere necessario scalare.
Policy *MultidimPolicy Questo criterio consente di specificare il modo in cui vengono applicati i consigli.

Obiettivi multidim

MultidimGoals sono obiettivi che il gestore della scalabilità automatica dei pod multidimensionali tenta di raggiungere.

Campo Tipo Descrizione
Metrics []MetricSpec Contiene l'elenco delle metriche insieme al valore desiderato. Il gestore della scalabilità automatica del pod multidimensionale cerca di mantenere i valori desiderati.

Vincoli multidim

MultidimConstraints descrivono i vincoli per la scalabilità automatica. I vincoli hanno la precedenza sugli obiettivi.

Campo Tipo Descrizione
Global *GlobalConstraints Vincoli applicabili all'applicazione con scalabilità automatica nel suo complesso.
ContainerControlledResources []ResourceName Risorse del container che devono essere controllate dal gestore della scalabilità automatica. memory è l'unico valore supportato.
Container []ContainerConstraints Vincoli applicabili ai pod.

Vincoli delle risorse

ResourceConstraints definiscono la quantità minima e massima di risorse che puoi assegnare a un container, a un pod o a un'applicazione.

Campo Tipo Descrizione
MinAllowed ResourceList Quantità minima di risorse che puoi assegnare. Se non viene specificato, viene utilizzato 0.
MaxAllowed []ResourceName Quantità massima di risorse che è possibile assegnare. Se non viene specificato, non sono previsti limiti alla quantità massima di risorse.
Requests *ResourceConstraints Quantità minima e massima di risorse che un'applicazione può richiedere, sommata tra tutti i pod.

Vincoli dei container

ContainerConstraints sono vincoli che si applicano ai pod.

Campi Tipo Descrizione
Name String Nome del container per il quale sono specificati i vincoli. Puoi anche utilizzare * per specificare i vincoli per tutti i container in un pod.
Requests *ResourceConstraints Quantità minima e massima delle risorse che il container specificato può richiedere.

UpdateMode

Utilizza il criterio UpdateMode per controllare in che modo vengono applicati i consigli calcolati.

Campi Tipo Descrizione
AutoUpdates UpdateMode = "Auto" AutoUpdates consente di applicare tutti i suggerimenti del gestore della scalabilità automatica in qualsiasi momento.

Criteri multidim

Campi Tipo Descrizione
Update UpdateMode Definisce come applicare i consigli. La convalida di un valore vuoto non riesce.

Stato multidimPodAutoscaler

MultidimPodAutoscalerStatus descrive lo stato di runtime del gestore della scalabilità automatica.

Campi Tipo Descrizione
RecommendedPodResources *RecommendedPodResources La quantità calcolata di risorse più recentemente consigliata dal gestore della scalabilità automatica per i pod controllati.
CurrentReplicas Int32 CurrentReplicas è il numero attuale di repliche dei pod gestiti da questo gestore della scalabilità automatica, determinato l'ultimo accesso dal gestore della scalabilità automatica.
DesiredReplicas Int32 DesiredReplicas è il numero desiderato di repliche di pod gestiti da questo gestore della scalabilità automatica, calcolato per l'ultima volta dal gestore della scalabilità automatica.
Conditions []metav1.Condition Conditions è l'insieme di condizioni richieste per consentire a questo gestore della scalabilità automatica di scalare il proprio target. Indica se le condizioni sono soddisfatte.

Passaggi successivi