Kubernetes è in grado di rilevare automaticamente i baccelli e riprogrammare i baccelli su altri nodi. L'unico problema è che il tempo impiegato dal nodo per scendere e il pod da riprogrammare. Vediamo come puoi drenare un nodo in kubernetes. Ma prima, assicurati di avere Kubectl installato sul tuo sistema. Per eseguire i comandi, dovrai anche installare il cluster Minikube e quindi avviare la finestra del terminale. È possibile utilizzare il minikube seguendo il comando di seguito.
Inoltre, assicurati che il server Kubernetes debba essere la versione 1.5 o più recenti. Immettere la "versione kubectl" se si desidera controllare la versione. È necessario soddisfare determinati requisiti per completare con successo questa attività. Non è necessario che le tue applicazioni siano disponibili durante lo scarico del nodo o non hai bisogno che siano altamente disponibili. Hai imparato a conoscere il concetto di budget poddisruption e impostare i budget poddisruption per le app che li richiedono.
Configurare un budget di interruzione se lo si desidera
Per garantire che i carichi di lavoro siano disponibili durante la manutenzione, creare un budget poddisruption. Configurare prima un poddisruptionbudgets, quindi continuare a seguire questo consiglio se la disponibilità è cruciale per le applicazioni che possono essere eseguite sul / i nodo che stai drenando.
L'uso di KubeCtl Drain per rimuovere/eliminare un nodo
È possibile utilizzare KubeCtl Drain per sfrattare tutti i pod prima di eseguire la manutenzione su un nodo sfatti di sicurezza terminano i contenitori del pod in modo ordinato mentre rimani all'interno dei budget poddisruption che hai stabilito.
Kubectl Drain alla fine ignora alcuni baccelli sul nodo che non sono possibili per essere distrutti per impostazione predefinita. È quindi sicuro spegnere il nodo disattivando la sua macchina fisica o, se è in esecuzione su una piattaforma cloud, disinstallando la sua macchina virtuale. Per cominciare, identifica il nodo che si desidera drenare con il suo nome. Il comando seguente visualizzerà un elenco di tutti i nodi menzionati nel cluster.
Successivamente, informa Kubernetes che il nodo dovrebbe essere drenato:
Dopo che il nodo restituisce (e senza causare un errore), è possibile disattivarlo (o equivalentemente, se su una piattaforma cloud, eliminare la macchina virtuale che sostiene il nodo). Se si lascia un nodo nel cluster per la manutenzione, utilizzare il seguente comando per dire a Kubernetes che può iniziare a riprogrammare nuovi baccelli sul nodo.
Drenando numerosi nodi allo stesso tempo
Un solo nodo dovrebbe ricevere le istruzioni di drenaggio Kubectl alla volta. È possibile, tuttavia, eseguire molte istruzioni di drenaggio Kubectl contemporaneamente, in vari terminali o in background, per diversi nodi. Anche se sono funzionanti numerose istruzioni di drenaggio contemporaneamente.
Se hai uno stato Usfulset con 3 repliche e un budget poddisruption di 2, Kubectl Drain rimuoverà un pod solo se tutti quei baccelli sono pronti. Se si esegue più comandi di drenaggio contemporaneamente, Kubernetes onorerà il budget poddisruption e garantirà che venga eseguito un solo drenaggio.
Sfratto in kubernetes
È possibile utilizzare l'API di sfratto per avviare uno sfrattamento di sfratti se non si è disposti a utilizzare Kubectl Drain (ad esempio, per evitare di eseguire un comando esterno o per avere un migliore controllo durante il processo di sfratto del pod).
Devi prima avere familiarità con i client di lingua Kubernetes per utilizzare l'API. La sottoinsurce di uno sfratto di un pod può essere considerata un'azione di eliminazione sul pod che è controllata dalle politiche. Per provare uno sfratto, pubblichi un tentativo di operazione (o per tentare di costruire uno sfratto in modo più accurato).
Sfratti bloccati
A meno che tu non agisca, un'applicazione potrebbe essere rotta e l'API di sfratto restituirà sempre 429 o 500. Effetti simili si possono anche vedere se l'ultimo pod da sfrattare ha un lungo periodo di grazia di terminazione.
Ci sono due opzioni in questa situazione: interrompere o mettere in pausa l'operazione automatica. Riavvia l'automazione dopo aver determinato la causa dell'applicazione bloccata. Invece di usare l'API di sfratto, elimina il pod dal piano di controllo del cluster quando è passato un ragionevole quantità di tempo.
Conclusione
In questo articolo, abbiamo parlato dell'uso di Kubectl Drain. Vengono spiegati vari comandi per aiutarti a capire il metodo di drenaggio in Kubernetes.