Sonde di prontezza di Kubernetes

Sonde di prontezza di Kubernetes
Kubernetes è un framework fantastico per la distribuzione di microservizi e app. Quando i pod non funzionano correttamente, vengono riavviati o rimossi da un servizio, che è una caratteristica meravigliosa. Kubernetes richiede la nostra assistenza nel determinare se un pod è operativo. Le sonde del contenitore vengono utilizzate per impostarlo. In questo articolo, cercheremo di capire cosa sono le sonde di prontezza di Kubernetes e come funziona.

Quali sono le sonde di prontezza?

Kubernetes utilizza sonde di prontezza per capire quando è sicuro trasmettere il traffico a un pod o quando è il momento di spostare il pod allo stato pronto.

Una sonda di prontezza valuterà se un pod specifico accetterà il traffico se utilizzato come endpoint back -end per un servizio.

La sonda di prontezza funziona per il resto della vita del pod; Ciò significa che funziona anche dopo che il pod ha raggiunto lo stato pronto. Inoltre, la nostra applicazione può rendersi inaccessibile per la manutenzione o alcuni lavori di fondo rispondendo alla sonda con varie risposte.

Indica se il contenitore è pronto ad accettare le domande. Nel caso in cui la sonda di prontezza si distrugga per qualsiasi motivo, il controller degli endpoint elimina l'indirizzo IP dei pod dagli endpoint tra tutti i servizi che soddisfano il pod. L'errore è la condizione predefinita di prontezza prima del ritardo iniziale.

Quando dovresti usare una sonda di prontezza?

La sonda di prontezza può essere proprio come la sonda di vivace (che determina quando un contenitore dovrebbe essere riavviato) in questo scenario. Ma la presenza della sonda di prontezza nella specifica suggerisce che il pod inizierà senza accettare alcun traffico e accettare il traffico solo una volta che la sonda inizia a avere successo.

Puoi usare sia la vivacità che una sonda di prontezza se la tua app è fortemente dipendente dai servizi di backend. La sonda di prontezza garantisce che ogni servizio di backend essenziale sia disponibile, oltre alla sonda di vita, che passa quando l'app è sana. Ciò impedisce l'invio del traffico a pod che possono reagire solo con i messaggi di errore.

Una sonda di avvio può aiutare se il contenitore richiede il caricamento di una grande quantità di dati, file di configurazione o migrazioni durante l'avvio. Una sonda di prontezza è abbastanza utile se si desidera distinguere tra un'app che non è riuscita e l'altra che sta ancora elaborando i suoi primi dati.

Prerequisito

Alcuni prerequisiti devono essere soddisfatti prima di usare le sonde di prontezza di Kubernetes in pratica. Ubuntu 20.0 è un sistema operativo Linux che deve essere installato per primo. Poiché Kubernetes su Linux lo richiede, installa anche il cluster minikube.

Prima di passare al terminale della riga di comando, dobbiamo prima iniziare Ubuntu 20.04, che è già stato installato. Digita "Terminal" in Ubuntu 20.04 Casella di ricerca del sistema per avviare rapidamente il terminale.

Dopodiché, il minikube dovrebbe essere avviato. Per avviare il minikube, utilizzare il comando terminale “Minikube Start."Questo comando lancerà il cluster Kubernetes e creerà una macchina virtuale in grado di eseguire il cluster. L'output del comando "Minikube Start" è rappresentato di seguito:

Esempio di sonde di prontezza di Kubernetes

Possiamo configurare un'app di esempio. In questo caso, un semplice server Web Nginx, per capire come funzionano le sonde di prontezza. Abbiamo sviluppato una configurazione di distribuzione di base qui. Ogni aspetto del file di configurazione è presentato in entrambi gli screenshot allegati:

Questa configurazione deve essere salvata in un file chiamato prontezza.Yaml.

Successivamente, usa kubectl applica -f prontezza.Yaml per applicarlo. L'istruzione e il suo output possono essere visti nella seguente screenshot:

Ora abbiamo sviluppato un servizio per la completa comprensione dell'esempio.

Salva questa configurazione su SVC.file yaml.

Successivamente, usa kubectl applica -f svc.Yaml per applicarlo. L'istruzione e il suo output possono essere visti nella seguente screenshot:

Sebbene non esista un endpoint particolare per le sonde di prontezza, possiamo ottenere informazioni sulla loro condizione attuale eseguendo il comando Kubectl Descrivi Pods. Esegui il comando Kubectl Ottieni PODS e controlla lo stato dei pod e altri dettagli.

Verranno visualizzati i pod, insieme al loro stato e agli stati pronti. Come puoi vedere, il nostro baccello è in esecuzione come previsto. L'istruzione e la sua uscita possono essere viste nello screenshot fornito di seguito:

Il risultato di "Kubectl Descrive Pod" è allegato di seguito. L'istruzione e il suo output possono essere visti nella seguente screenshot:

La sezione degli eventi verrà visualizzata nella parte inferiore dell'uscita del seguente comando:

Con il comando Kubectl Ottieni endpoint, possiamo esaminare gli endpoint. Il servizio Nginx ha un endpoint, come si può vedere. L'istruzione e il suo output possono essere visti nella seguente screenshot:

Potremmo usare il comando Kubectl Descrive Endpoints Nginx per vedere ulteriori informazioni. L'istruzione e il suo output possono essere visti nella seguente screenshot:

Supponiamo di impostare il parametro della porta per la sonda di prontezza su 81 e salvare la configurazione. Innanzitutto, verifica direttamente lo stato del pod. Lo stato è "in esecuzione", come puoi vedere di seguito. L'istruzione e il suo output possono essere visti nella seguente screenshot:

Poiché non abbiamo aggiornato la porta 81, ha restituito un valore booleano di "vero", come mostrato nello screenshot seguente. Se si modifica la porta 81 e se viene aggiornata correttamente, restituirà "false" indicando che il servizio Nginx non ha endpoint perché il contenitore non è pronto a ricevere il traffico. L'istruzione e la sua uscita possono essere viste nello screenshot seguente.

Conclusione:

In questo articolo, sono stati osservati gli effetti della sonda di prontezza e i parametri che possono essere configurati. Sebbene ci siamo concentrati sul controllo HTTP, le tecniche che abbiamo appreso possono essere applicate a uno qualsiasi degli altri test. Per configurare e gestire sonde di prontezza, è necessario prima comprendere l'architettura e le dipendenze della tua applicazione. Speriamo che tu abbia trovato questo articolo utile. Controlla gli altri articoli di suggerimento Linux per ulteriori suggerimenti e articoli.