Implementazione scalabile dei pod con Horizontal Pod Autoscaler - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementazione scalabile dei pod con Horizontal Pod Autoscaler

Il Kubernetes Horizontal Pod Autoscaler ridimensiona automaticamente il numero di Pods in una distribuzione, un controller di replica o un set di repliche in base all'utilizzo di quella risorsa. CPU Ciò consente alle applicazioni di dimensionare orizzontalmente le risorse in base all'aumento della domanda, o di ridurle orizzontalmente quando non sono necessarie, liberando così i nodi per altre applicazioni. Quando si imposta una percentuale di CPU utilizzo target, Horizontal Pod Autoscaler ridimensiona l'applicazione verso l'alto o verso l'esterno per cercare di raggiungere tale obiettivo.

Il Horizontal Pod Autoscaler è una risorsa standard in API Kubernetes ciò richiede semplicemente che una fonte di metriche (come la Kubernetes metrics server) è installato sul tuo EKS cluster Amazon per funzionare. Non è necessario distribuire o installare Horizontal Pod Autoscaler sul cluster per iniziare a scalare le applicazioni. Per ulteriori informazioni, consulta la pagina Horizontal Pod Autoscaler nel Kubernetes documentazione.

Usa questo argomento per preparare il Horizontal Pod Autoscaler per il tuo EKS cluster Amazon e per verificare che funzioni con un'applicazione di esempio.

Nota

Questo argomento si basa su Horizontal Pod autoscaler guida dettagliata in Kubernetes documentazione.

Prerequisiti

Esecuzione di un'applicazione di test di Horizontal Pod Autoscaler

In questa sezione implementerai un'applicazione di esempio per verificare il corretto funzionamento di Horizontal Pod Autoscaler.

Nota

Questo esempio si basa su Horizontal Pod guida dettagliata di autoscaler in Kubernetes documentazione.

Per testare l'installazione di Horizontal Pod Autoscaler
  1. Implementa un'applicazione server Web Apache con il comando seguente.

    kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

    Questo server web Apache Pod ha un CPU limite di 500 millicpu e funziona sulla porta 80.

  2. Crea una risorsa Horizontal Pod Autoscaler per l'implementazione di php-apache.

    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

    Questo comando crea un autoscaler che mira al 50% di CPU utilizzo per la distribuzione, con un minimo di uno Pod e un massimo di dieci Pods. Quando il CPU carico medio è inferiore al 50 percento, l'autoscaler cerca di ridurre il numero di Pods nella distribuzione, almeno uno. Quando il carico è superiore al 50 percento, l'autoscaler tenta di aumentare il numero di Pods nella distribuzione, fino a un massimo di dieci. Per ulteriori informazioni, consulta How does a HorizontalPodAutoscaler work? nel Kubernetes documentazione.

  3. Descrivere il componente di scalabilità automatica con il comando seguente per visualizzarne i dettagli.

    kubectl get hpa

    Di seguito viene riportato un output di esempio:

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s

    Come puoi vedere, il CPU carico attuale è0%, perché non c'è ancora carico sul server. Il Pod count è già al limite più basso (uno), quindi non può essere scalato.

  4. Crea un carico per il server Web eseguendo un container.

    kubectl run -i \ --tty load-generator \ --rm --image=busybox \ --restart=Never \ -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
  5. Per osservare l'incremento dell'implementazione, esegui periodicamente il seguente comando in un terminale separato dal terminale in cui hai eseguito il passaggio precedente.

    kubectl get hpa php-apache

    Di seguito viene riportato un output di esempio:

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 5 4m44s

    Potrebbe essere necessario più di un minuto per aumentare il numero di repliche. Se la CPU percentuale effettiva è superiore alla percentuale target, il numero di repliche aumenta fino a 10. In questo caso, è 250%, quindi il numero di REPLICAS continua ad aumentare.

    Nota

    Potrebbero essere necessari alcuni minuti prima che il numero di repliche raggiunga il limite massimo. Se, ad esempio, sono necessarie solo 6 repliche affinché il CPU carico rimanga pari o inferiore al 50%, il carico non supererà le 6 repliche.

  6. Arresta il carico. Nella finestra del terminale in cui si sta generando il carico, arrestare il carico tenendo premuti i tasti Ctrl+C. È possibile guardare il dimensionamento delle repliche nuovamente a 1 eseguendo di nuovo il seguente comando nel terminale corrispondente.

    kubectl get hpa

    Di seguito viene riportato un output di esempio:

    NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 25m
    Nota

    L'intervallo di tempo predefinito per il ridimensionamento è di cinque minuti, quindi ci vorrà del tempo prima che il numero di repliche raggiunga nuovamente 1, anche quando la percentuale corrente CPU è dello 0%. L'intervallo di tempo è modificabile. Per ulteriori informazioni, consulta Horizontal Pod Autoscaler nel Kubernetes documentazione.

  7. Al termine dell'esercitazione con l'applicazione di esempio, elimina le risorse php-apache.

    kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache