GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Perché dovrei preoccuparmi di Kubernetes, Docker e Container Orchestration?

Una persona al lavoro mi ha chattato, commentando i miei recenti post sul blog sui cluster Raspberry Pi Kubernetes in fase di creazione e si è chiesto "perché dovrei preoccuparmi di Kubernetes o Docker o di quella roba?"

Bella domanda e me la sto cavando da solo. Ci sono molte risorse là fuori ma nessuna che parla la mia lingua, quindi ecco i miei pensieri e come lo spiego.

"Ehi, ho questa nuova fantastica app per blog!"

"Favoloso, dammi!"

"Certo, prima assicurati di avere questa versione di Windows/Linux, questa versione di .NET/Python/Node e questi prerequisiti."

"Aspetta, lascia che ti chiami la prossima settimana quando sarà tutto risolto."

Questo è il modo in cui il software è stato costruito per anni. Ora distribuiamolo.

"Ecco il codice/dll/applicazione zippato."

"Fammi FTP/SFTP/Trascina questo da una finestra di Explorer all'altra."

"Questa versione di quel file è impostata su questo?"

"Aspetta, cosa?"

"Assicurati che system/boss/dll/nounjs sia la versione 4.5.4.1, l'hanno patchata."

"Ok, zitta* in produzione."

Ancora una volta, ci siamo stati tutti. Siamo nel 2018 e ci sono più persone che lo fanno di quanto tu voglia ammettere.

Entra nelle macchine virtuali! Molto meglio, vero? Ecco una chiave USB con un file che è TUTTO ciò di cui hai bisogno. Gestito.

"Dimenticalo, usa questo. È meglio di un computer, è una macchina virtuale. Ma attenzione, non sa che è virtuale, quindi rispetta la bugia."

"OK, inviamelo via email."

"Beh, sono 32 giga. Fammi UPS."

La tua app è di soli 100 mega e questa VM è di decine di giga. Perché una persona di 150 libbre ha bisogno di un Hummer da 6000 libbre? Isolamento, credo.

"L'app sta diventando più complessa, ma è interessante. Ora ci sono quattro VM. Una per il DB, una per Redis e una front-end e il carrello ne ottiene una. Sono i microservizi!"

"Mi piace."

"Ecco un'unità da 2 TB."

Bello che lo stiamo rompendo, ma non così bello che ci stiamo gonfiando. Ora dobbiamo eseguire apt upgrade/windows update su tutte queste cose e mantenerle. Perché guidare un Hummer quando posso ottenere un Lyft?

"Ok, li ho fatti funzionare tutti su questa robusta macchina sotto la mia scrivania."

"Ottimo, stiamo passando al cloud."

"Sigh. Devo aggiornare tutte queste stringhe di connessione e iniziare a caricare le VM."

"Sarà fantastico. È come una macchina sotto la tua scrivania, tranne per il fatto che la tua scrivania è nel cloud."

"Cos'è la nuvola?"

"È una stanza server che non puoi vedere. Fondamentalmente sono i computer sotto la tua scrivania. Ma invisibile."

La maggior parte dell'infrastruttura VM è piuttosto sciatta. Sono indirizzi IP codificati, sono macchine virtuali con nomi scadenti che vivono nelle stesse sottoreti, quindi le sposteremo nel cloud (solleva e sposta!) Ma poi sono ancora disordinate, ma sono nel Cloud™, giusto?

"Sai, tutte queste macchine virtuali sono pesanti. Devo mantenere e spostare un sacco di cose che NON SONO l'app. I container sono la strada. Basta definire i requisiti di base dell'app e condividere tutto il resto."

"Ne ho sentito parlare. Posso digitare "docker run hello-world" e su qualsiasi macchina caricherà l'immagine hello world (basata su Ubuntu) da un hub centrale e la eseguirà in modo per lo più isolato. Garantito per lavorare e correre, anche con il passare del tempo."

"Bello, perché sempre più parti della nostra app sono in .NET Core su Linux, ma ci sono anche alcuni Python e nodi."

"Sì e verrà eseguito solo perché i prerequisiti sono chiaramente elencati nel contenitore... e i prerequisiti sono in effetti riferimenti ad altre immagini del contenitore."

"Sono container fino in fondo."

Ora il DB, Redis, il front end e il carrello possono essere richiamati in alcuni semplici file di testo. Invece del tuo sistema operativo host (il computer principale... il metallo) che carica un sacco di sistemi operativi guest (letteralmente copie!) e poi carica tutte le app e i prerequisiti, condividerai i sistemi operativi e, se appropriato, i binari e le librerie .

"OK, ora abbiamo un sacco di container in esecuzione in Docker, ma a volte si interrompono o si interrompono."

"Eseguirli di nuovo?"

"È più che altro, a volte abbiamo bisogno di 3 contenitori del carrello degli acquisti e altre volte abbiamo bisogno di 2 o più contenitori di DB. Inoltre, i loro IP a volte cambiano"

"Quindi abbiamo bisogno di qualcosa per mantenerli in esecuzione, ridimensionarli o ridimensionarli automaticamente, oltre a gestire il networking e la denominazione/dns."

Immettere un agente di orchestrazione del contenitore. Ci sono Docker Swarm, Mesos/Marathon, Azure Service Fabric e altri, ma per questo post useremo Kubernetes.

"Quindi Kubernetes gestisce i miei container, li fa funzionare e aiuta a gestire la rete?"

"Sì e no. Parti di Kubernetes - o k8s, come dicono persone fantastiche come me che lo usano da quasi 3 ore - fanno parte dei componenti principali, come etcd per l'archiviazione del valore delle chiavi e il programma di pianificazione kube per la selezione su quale nodo eseguire un "pod" (un pod è più interessante da dire rispetto a un container, ma a volte un pod è più di un container. Comunque, molto interessante.)

"Avrò bisogno di fare un glossario."

"Dannazione che lo farai."

Kubernetes ha praticamente tutto collegabile. Non ti piace la loro configurazione di rete? Ci sono letteralmente più di una dozzina di opzioni. Vuoi grafici e grafici migliori? Un intero mondo di opzioni.

Proprio come un Dockerfile può spiegare dichiara ciò che è necessario per eseguire un'app, un file YAML di Kubernetes descrive non solo i contenitori, ma le porte necessarie, il numero di repliche di ciascuna (pensa alla web farm), i nomi, le variabili di ambiente e altro ancora. Ecco un file che mostra un front-end, un back-end e un sistema di bilanciamento del carico. Tutto è lì, le stringhe di connessione diventano ricerche DNS interne, ogni servizio ha un sistema di bilanciamento del carico (se lo desideri) e puoi ridimensionare manualmente o automaticamente.

"Ok, allora perché dovrebbe interessarmi?"

"Alcuni motivi. In passato, per installare la nostra app dovevo darti un documento Word e un fine settimana. Ora scrivi kubectl apply theapp.yaml e funziona in meno di un minuto."

"Sto ancora fatturando per il fine settimana."

In poche parole, siamo all'inizio di una nuova fase di DevOps. Uno che è programmatico, elastico e dichiarativo. È coerente, chiaro e modulare.

Ti consiglio di dare un'occhiata a "Reasons Kubernetes is cool" di Julia Evans e leggere come creare un cluster Kubernetes (e il VMS di gestione è gratuito) in Azure.

* Sto cercando di far tacere una cosa. Noi non Es Es Eaytch nelle macchine! Ci mettiamo a tacere! È pronunciato da qualche parte tra shush e shoosh. Assicurati di aggiungere un po' di petit jeté quando lo dici.

* Immagine utilizzata in CC

Sponsor: Scatena un Python più veloce Potenzia le prestazioni delle tue applicazioni sulle future piattaforme Intel® con la distribuzione Intel® per Python. Disponibile per Windows, Linux e macOS. Ottieni subito la distribuzione Intel® per Python*!


Docker
  1. differenza tra podman e docker.

  2. Howto:cos'è Git e Github? Come lo uso e perché dovrebbe interessarmene?

  3. Quando e perché usare Docker

  4. Come installare Docker e distribuire uno stack LAMP

  5. Che cos'è containerd e come si collega a Docker e Kubernetes?

Come aggiornare l'immagine Docker e il contenitore all'ultima versione

Come eseguire SSH in un contenitore Docker ed eseguire comandi

Sfrutta l'orchestrazione dei container in questo tutorial sullo sciame di Docker

Come distribuire e gestire un contenitore Docker MongoDB

Come copiare file tra host e contenitore Docker

21 comandi essenziali che ogni utente Docker dovrebbe conoscere