Kubectl Elimina i baccelli sfrattati

Kubectl Elimina i baccelli sfrattati
Vedremo come eliminare i baccelli sfrattati o cancellati in un cluster Kubernetes in questo post. Ci sono numerose spiegazioni per cui alcuni pod sono negli stati sfrattati. Lo sfratto è spesso causato dalla mancanza di risorse nei nodi del lavoratore o da un errore di applicazione. La risoluzione può verificarsi a seguito del ridimensionamento di un'applicazione o della fornitura di una nuova versione di un'applicazione che termina i pod esistenti.

Cos'è un baccello sfrattato?

Quando viene raggiunto il disco o il limite di memoria di un nodo, un flag sul nodo Kubernetes è impostato per segnalare che è sotto carico. Questa bandiera impedisce anche nuove allocazioni su questo nodo, innescando una procedura di sfratto per liberare alcune risorse.

Questo è il kubelet per il nodo sotto pressione, che gestirà il processo di sfratto. Questo gestirà i baccelli in fallimento fino a quando le risorse spese del nodo non scendono al di sotto della soglia di sfratto, a quel punto il kubelet terminerà tutti i contenitori di baccelli e imposterà la podfase su fallimento.

Se una distribuzione è responsabile del pod sfrattato, la distribuzione crea un nuovo pod per Kubernetes per programmare.

Quando verranno sfrattati i baccelli?

Questa distinzione ha a che fare con il modo in cui Kubernetes gestisce la pressione delle risorse. Se le risorse del nodo diventano scarse, Kubernetes deve sfrattare i baccelli, un processo è noto come sfratto della pressione del nodo. Lo scheduler del nodo può ospitare una CPU completamente occupata; Pertanto, lo sfratto non è necessario.

Deve sfrattare i baccelli dal nodo e provare a metterli in un altro nodo se la memoria è insufficiente. Questo è noto come sfratto a causa delle restrizioni di memoria. Lo sfratto della pressione del nodo può anche essere causato dalla mancanza di spazio su disco.

Quali fattori considera Kubernetes quando si decide quali pod sfrattare?

La pressione del nodo è causata dai pod sfrattati in base ai vincoli di risorse, come la memoria o lo spazio su disco come abbiamo menzionato sopra. I pod in uno stato fallito sono i primi a essere sfrattati, in quanto non sono in esecuzione ma potrebbero comunque consumare risorse. Kubernetes esamina quindi i pod in esecuzione.

Sfrattare il pod che utilizza la maggior parte della memoria non funzionerà perché è molto probabilmente un pod attivo che sarà difficile da distribuire. Invece, Kubernetes effettua questa selezione basata su due classi diverse: QoS (qualità del servizio) e priorità.

Cosa segue quando viene sfrattato un pod?

Quando viene rilevata una condizione critica, Kubernetes esegue un po 'di pulizia (sì, l'intervallo di pulizia è il termine ufficiale per l'intervallo di monitoraggio dello sfratto) e sfrattano i baccelli. Questa procedura "sfratta" (termina) un baccello e i contenitori che lo hanno costruito, ma non il baccello stesso. Per impostazione predefinita, Kubernetes non distingue tra baccelli altamente critici e per niente importanti; Ha solo un dovere, che è quello di recuperare le risorse.

I carichi di lavoro gestiti da una risorsa di carico di lavoro o la distribuzione produrranno automaticamente nuovi pod e rimuoveranno i baccelli sfrattati.

Nonostante il fatto che i baccelli sfrattati siano stati terminati e non dovrebbero più consumare alcuna risorsa dal nodo, rimangono - e Kubernetes continua a gestirli. Con un numero crescente di baccelli sfrattati, ciò potrebbe portare ad un aumento del numero di risorse richieste all'interno dell'amministrazione Kubernetes.

Ora cercheremo di capire come trovare un baccello sfrattato ed eliminarlo correttamente. Ci sono alcuni requisiti che devono essere soddisfatti inizialmente.

Prerequisito

Per eseguire i comandi per l'eliminazione dei baccelli sfrattati, in primo luogo, dovremo impostare un cluster di minikube sul nostro PC. Ubuntu 20.04 è stato utilizzato per implementare i comandi di eliminazione dei baccelli sfrattati in questo argomento. Possiamo anche utilizzare il nostro sistema operativo preferito per questo poiché abbiamo già installato Kubectl. Deve essere installato prima che i comandi possano essere eseguiti.

Ora è tempo di iniziare un terminale. Un'opzione è utilizzare la barra delle applicazioni del nostro sistema operativo per raggiungere il terminale. Un altro modo è utilizzare il collegamento della tastiera “Ctrl + alt + T."Per avviare un terminale, selezionare una di queste opzioni. Innanzitutto, dobbiamo avviare un cluster di minikube che era stato precedentemente distribuito su Ubuntu 20.04. Ora lanceremo Minikube digitando il seguente comando nel terminale. L'output pertinente per le istruzioni mostrate seguenti è allegata qui.

Come rilevare un baccello sfrattato?

Per scoprire il numero esatto di baccelli che sono stati sfrattati, eseguire il seguente comando. Questo comando visualizza un elenco dei pod che sono stati sfrattati dal sistema. L'output pertinente per le istruzioni mostrate seguenti è allegata qui.

Ora, proviamo una forma diversa dello stesso comando. Abbiamo aggiunto -C alla fine del comando, come puoi vedere. Il resto dell'istruzione è indistinguibile da quello sopra. Ti dirà quanti pod sono stati sfrattati in totale. Non ci sono baccelli sfrattati nel nostro scenario. Di conseguenza, come puoi vedere nella riga finale dello screenshot allegato, il comando restituisce 0. L'output pertinente per le istruzioni mostrate seguenti è allegata qui.

Se il tuo sistema ha dei baccelli sfrattati, il comando sopra emetterà il numero, come 10, 3, 9 e così via.

Come possono essere puliti manualmente i baccelli sfrattati?

Se non vuoi aspettare che la soglia della raccolta della spazzatura venga soddisfatta, puoi distruggere i baccelli manualmente con kubectl. In un certo senso, ogni pod sfrattato identificato può essere eliminato usando il comando indicato sopra.

Questo comando può aiutarti a ripulire manualmente i baccelli sfrattati. L'output pertinente per le istruzioni mostrate seguenti è allegata qui.

Conclusione

Lo sfratto è la procedura di fallire deliberatamente uno o anche più di un pod su uno qualsiasi dei nodi affamati di risorse. Abbiamo comunicato sui baccelli sfrattati in questo tutorial. Abbiamo anche discusso di come eliminare un baccello sfrattato in semplici passaggi. Ora puoi implementare la stessa guida nel tuo sistema usando Kubectl e vedere quanti pod sfrattati esistono nel sistema. Ora puoi elencarli tutti ed eliminare quelli selezionati.