Kubernetes

Ridimensionamento automatico del pod orizzontale Kubernetes

Ridimensionamento automatico del pod orizzontale Kubernetes
I pod possono essere creati come oggetti autonomi o come parte di un set di repliche scalabili o di una distribuzione. Ciascuno degli ultimi due oggetti viene utilizzato per distribuire non solo un pod, ma una moltitudine di essi. L'obiettivo qui è che i pod possono essere fungibili se uno ha troppo traffico altri due possono generarsi e sopportare il carico extra. Tuttavia, una cosa importante da notare qui è che sia il set di repliche che gli oggetti di distribuzione hanno un numero codificato di repliche di pod che intendono eseguire.

Se il conteggio delle repliche è impostato su 100 e la domanda è troppo bassa, anche allora i 100 pod saranno attivi e funzionanti. Ciò si traduce in uno spreco di CPU e risorse di memoria. Sì, offre affidabilità, nel senso che se un nodo si blocca e i pod al suo interno muoiono, il controller del set di repliche proverebbe a riportare il numero di pod a 100 generando pod in altri nodi. L'applicazione rimane online.

In un senso più astratto, il set di repliche cercherebbe di ottenere un stato desiderato del cluster e guarderebbe il stato attuale e scopri come può raggiungere lo stato desiderato.

Tuttavia, vorremmo qualcosa di un po' più sensibile alla domanda del mondo reale. accedere Autoscaler pod orizzontale. È compito di Horizontal Pod Autoscaler ridimensionare l'applicazione quando è necessario e quindi ridimensionarla nuovamente una volta che il carico di lavoro diminuisce.

Perché utilizzare un Autoscaler Pod orizzontale??

Come suggerisce il nome, questo componente scalerebbe automaticamente la tua applicazione. Nel cloud, questo può davvero aiutarti a ridurre le risorse di calcolo e di memoria che ti verranno addebitate. Poiché l'Autoscaler è sensibile all'utilizzo delle risorse, quando vede che molti pod sono semplicemente inattivi, ridimensiona l'applicazione e quando la domanda su quei pod aumenta, ridimensiona l'applicazione creando nuovi pod e il carico viene distribuito su quelli.

Può farti risparmiare tempo prezioso e risorse di calcolo. Non dovrai preoccuparti di quale dovrebbe essere il conteggio delle repliche per i tuoi pod quando scrivi una distribuzione, l'autoscaler lo gestirà per te.

Configurazione iniziale

Il primo requisito è che tu abbia un cluster Kubernetes in esecuzione. Usa Katacoda Playground, perfetto per sperimentare e conoscere Kubernetes. La prossima cosa di cui avrai bisogno è un server di metriche.

Questo componente aggiuntivo per il tuo sistema Kubernetes (spazio dei nomi del sistema kube) raccoglierebbe metriche come l'utilizzo della CPU e della memoria da due diverse prospettive:

  1. Risorsa utilizzata da ciascun pod
  2. Risorsa consumata in ogni nodo

Le metriche da entrambi i punti di vista sono cruciali per aiutare Autoscaler a decidere quale dovrebbe essere la sua prossima mossa. Per aggiungere il metric server al tuo cluster Kubernetes, segui questa guida. Ora siamo pronti per vedere il Pod Autoscaler orizzontale in azione.

Utilizzo dell'Autoscaler

Per vedere l'Autoscaler funzionante, abbiamo bisogno di un'applicazione di prova test. Creiamo un semplice server php-apache ed esponiamolo come servizio.

$ kubectl esegui php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose
--porta=80

L'immagine utilizzata qui è una delle immagini di esempio fornite dal progetto Kubernetes. Esegue alcune attività che richiedono molta CPU e in questo modo rende il processo molto più evidente.

Per scalare automaticamente questa distribuzione, dobbiamo informare il programma di scalabilità automatica quale sono il numero minimo e massimo di pod che consentiremo e la percentuale di CPU che possono utilizzare. Ci sono molti altri fattori che puoi considerare come la memoria, l'archiviazione e anche la rete.

$ kubectl scala automaticamente le distribuzioni/php-apache --cpu-percent=50 --min=1 --max=10

Allo stato attuale, poiché nessuno sta consumando questo servizio, preferirà rimanere al valore minimo. Puoi controllare lo stato di tutta la distribuzione con scalabilità automatica nello spazio dei nomi predefinito eseguendo:

$ kubectl ottieni hpa
NOME         RIFERIMENTO              TARGET   MINPODS   MAXPODS   REPLICHE   ETÀ
php-apache   Deployment/php-apache   0%/50%    1        10        1          2 m

Generazione del carico e test della funzione di scalabilità automatica

Puoi vedere che il numero di repliche è ancora solo uno e il carico della CPU è insignificantemente basso. Possiamo creare un carico aggiuntivo e vedere come risponde l'autoscaler. Il servizio che espone i nostri pod php-apache non è esposto al mondo esterno, quindi creeremo un pod temporaneo e apriremo una sessione di shell interattiva in quel pod.

Questo ci permetterà di comunicare con tutti i servizi disponibili nel cluster, incluso il servizio php-apache.

$ kubectl run -i --tty busybox --image=busybox --restart=Mai -- sh
/ #

Noterai che il prompt cambierà indicando che siamo all'interno di questo contenitore. Ora proviamo a caricare un po' il nostro servizio facendo ripetutamente richieste. Nel nuovo prompt, eseguiamo il seguente ciclo while:

/ # mentre è vero; do wget -q -O- http://php-apache.predefinito.svc.grappolo.Locale; fatto

Apri un nuovo terminale, poiché non possiamo ancora terminare questo ciclo. Dopo aver ispezionato l'autoscaler vedrai l'utilizzo della CPU e dopo aver elencato i pod vedrai che ora ci sono più istanze del server php-apache,

$ kubectl ottieni hpa
NOME         RIFERIMENTO              TARGET    MINPODS   MAXPODS   REPLICHE   ETÀ
php-apache   Deployment/php-apache   121%/50%  1         10        4          1h
 
$ kubectl ottieni pod
NOME                          PRONTO     STATO    RIPARTI   ETÀ
busybox                      1/1       Corsa   0          6 m
php-apache-8699449574-7qwxd   1/1       In esecuzione  0          28 secondi
php-apache-8699449574-c9v54   1/1       In esecuzione  0          10h
php-apache-8699449574-h9s5f   1/1       In esecuzione  0          28 secondi
php-apache-8699449574-sg4hz   1/1       In esecuzione  0          28 secondi

Termina il ciclo while e il numero di pod diminuirà a uno in pochi minuti.

Conclusione

Quindi questa è una semplice dimostrazione di Horizontal Pod Autoscaler. Ricorda di avere un server delle metriche funzionale per il tuo cluster e durante la creazione di una distribuzione mantieni il conteggio delle repliche a 1. Il pod autoscaler orizzontale si occuperà del resto.

Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...
0 A.D. Tutorial
Tra i tanti giochi di strategia in circolazione, 0 A.D. riesce a distinguersi come un titolo completo e un gioco molto profondo e tattico nonostante s...
Tutorial Unity3D
Introduzione a Unity 3D Unity 3D è un potente motore di sviluppo di giochi. È multipiattaforma cioè ti permette di creare giochi per mobile, web, desk...