JavaRush /Java Blog /Random-IT /Chi sono Docker, Kubernetes, OpenShift e come sono correl...
Павел
Livello 11

Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?

Pubblicato nel gruppo Random-IT
Tutto inizia con l'imballaggio. Nello sviluppo industriale esiste la necessità di “impacchettare” l'applicazione assemblata, ad esempio, in modo che possa essere trasferita al server su cui funzionerà, nella forma in cui lo sviluppatore l'ha assemblata sul suo computer, tale “impacchettamento” dovrebbe servire come una sorta di protezione. Ciò elimina le sorprese, ad esempio quando un'applicazione funziona durante un test, ma si rompe quando viene trasferita in produzione. Inoltre, il "packaging" isola un'applicazione da un'altra, situata sullo stesso server, tale isolamento consente a un'applicazione di non interferire con il lavoro di un'altra (ad esempio: un'applicazione non sarà in grado di occupare tutta la RAM del server, lasciando il seconda applicazione al suo destino). I vantaggi del "packaging" con un'architettura a microservizi sono particolarmente evidenti, e questo è comprensibile; ci sono molti microservizi, molte piccole applicazioni che devono comunicare tra loro, ma allo stesso tempo non dovrebbero interferire tra loro. Un esempio è una cassettiera (server), in cui ci sono molti cassetti diversi, e possiamo facilmente spostare calzini diversi da un cassetto all'altro, e allo stesso tempo non si mescoleranno tra loro o con le mutandine. Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  -1 Il packaging è creato da strumenti di virtualizzazione. Un tempo le macchine virtuali (VM) venivano utilizzate come “packaging”. Gli anziani ricorderanno come hanno distribuito Windows XP su Vista in una macchina virtuale. Ora le VM per il packaging delle applicazioni appartengono al passato. I container hanno conquistato il mondo. Perché sono: più leggeri, più produttivi e più sicuri. Più nel dettaglio: in cosa differisce un container da una macchina virtuale? Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  - 2 È necessario ricordare alcuni vantaggi dei contenitori: • sono di dimensioni più ridotte (occupano meno memoria sul server); • avere accesso alle risorse del server condiviso (RAM, tempo di calcolo del processore); • avere una migliore portabilità verso altri ambienti (dal test all'industriale); • fornire una maggiore velocità di lancio (poiché il contenitore è leggero, si lancia più velocemente). Docker è la madre dei container. Quando dicono container, intendono Docker. Docker è un software per automatizzare la distribuzione e la gestione di applicazioni in ambienti containerizzati. Usando degli esempi, Docker è un incrocio tra un designer online e una stampante 3D con una gru. Cioè, può prima progettare un modello (immagine) per un contenitore, stampare (creare) il contenitore in base a determinate condizioni (immagine), quindi spostarlo dove necessario. Al posto delle leve vengono utilizzati i Dockerfile. Il processo di gestione è semplice: scrivi file, comandi, li esegui e vedi cosa succede. Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  - 3 Prima conoscenza con Docker Docker Compose: Docker aggiornato Consideriamo ora uno scenario in cui più contenitori devono essere in esecuzione in una posizione. L'utilità utilizzata a questo scopo è Docker Compose. Docker Compose è uno strumento incluso con Docker. È progettato per risolvere i problemi relativi alla distribuzione del progetto. Differenza tra Docker e Docker Compose: Docker viene utilizzato per gestire singoli contenitori. Docker Compose viene utilizzato per gestire più contenitori contemporaneamente. Questo strumento offre le stesse funzionalità di Docker, ma consente di lavorare con strutture più complesse. Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  - 4 Scenario tipico per l'utilizzo di Docker Compose: immagina di essere uno sviluppatore di un progetto web. Questo progetto include due siti web. Il primo consente agli uomini d'affari di creare negozi online con pochi clic. Il secondo è rivolto all'assistenza clienti. Questi due siti interagiscono con lo stesso database. Il tuo progetto sta diventando sempre più popolare e si scopre che la potenza del server su cui viene eseguito non è più sufficiente. Di conseguenza, decidi di spostare l'intero progetto su un'altra macchina. Se non hai utilizzato qualcosa come Docker Compose, dovrai migrare e riconfigurare i contenitori uno alla volta, sperando di non dimenticare nulla durante il processo. Se usi Docker Compose, spostare il tuo progetto su un nuovo server è una questione che può essere risolta eseguendo alcuni comandi. Per completare il trasferimento del progetto in una nuova posizione, è sufficiente effettuare alcune impostazioni e caricare una copia di backup del database sul nuovo server. Tipico DockerComposer: Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  - 5 cosa devi ricordare qui: i contenitori sono il mezzo principale per "confezionare" le applicazioni. Docker gestisce i contenitori, crea immagini di contenitori, preleva e sposta contenitori. Per gestire contemporaneamente un gruppo di contenitori, viene utilizzato Docker Compose, incluso in Docker. Questi programmi sono software gratuiti (omaggi - in una parola) Kubernetes (K8s) - Automazione Docker E così abbiamo implementato i container, sappiamo come trasferirli “in batch” da macchina a macchina. Ma all'improvviso uno dei contenitori è caduto! Cosa fare? Chi lo solleverà di nuovo? Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  - 6 Naturalmente puoi farlo manualmente, tramite Docker. Ma devi fare qualcosa, scrivere qualcosa, hai bisogno di una sorta di strumento di automazione. È qui che entra in gioco Kubernetes (abbreviato K8s), che si occuperà anche della gestione e dell'orchestrazione (gestione automatizzata delle entità correlate) dei container. Con i K8 a tua disposizione, non avrai bisogno di monitorare i container giorno e notte. È sufficiente definire lo scenario di comportamento e i K8 faranno tutto da soli. Funzionalità principali di Kubernetes 1. Fornisce scalabilità e gestione della configurazione. 2. Puoi descrivere cosa desideri ottenere quando distribuisci un cluster e K8 lo farà. Ad esempio, specifica il numero di pod, quanta memoria allocare per loro, indicare il numero di repliche (istanze) di applicazioni distribuite (in contenitori) sui pod. 3. Responsabile del mantenimento del sistema in un certo stato: se qualcosa cade, i K8 lo raccolgono, secondo la configurazione stabilita. Cosa devi ricordare qui: Kubernetes è uno strumento per orchestrare applicazioni containerizzate, automatizzandone la distribuzione, la scalabilità e il coordinamento in un cluster. Supporta le principali tecnologie di containerizzazione, incluso Docker. K8s è un software open source. Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  -7 OpenShift è una Ferrari nel mondo della virtualizzazione, bella, veloce e costosa Sviluppando l'argomento passiamo a OpenShift. OpenShift è un add-on di Kubernetes che offre funzionalità aggiuntive, è subito pronto all'uso, non richiede lunghe e faticose configurazioni e può essere messo subito in produzione. Guarda quante icone diverse ci sono sopra Kubernetes. E ognuno di loro fa le proprie cose interessanti. Chi sono Docker, Kubernetes, OpenShift e come sono correlati tra loro?  -8 Punti salienti di OpenShift: • È un prodotto a pagamento, a differenza di K8; • DevOps pronto all'uso, supporto per scenari di distribuzione canary di base blu/verde; • Supporto Jenkins integrato; • Fornisce strumenti utili per amministrare e lavorare con il cluster; • Dispone di un modello di sicurezza più rigoroso e di un monitoraggio integrato. Vale la pena sottolineare ancora una volta che OpenShift è un prodotto a pagamento, a differenza di Kubernetes. La differenza è questa: se prendiamo Kubernetes nudo, risolviamo tutti i problemi da soli. Se parliamo di OpenShift, si tratta di un prodotto Red Hat, che risolve i problemi emergenti come parte del supporto a pagamento. Riassumiamo: Nello sviluppo industriale c'è la necessità di “impacchettare” l'applicazione; questo approccio è particolarmente rilevante nell'architettura a microservizi. I contenitori sono il mezzo principale per le applicazioni di imballaggio. Docker gestisce i contenitori, crea immagini di contenitori, preleva e sposta contenitori. Per gestire contemporaneamente un gruppo di contenitori, viene utilizzato Docker Compose, incluso in Docker. Questi programmi sono software gratuiti. Kubernetes(K8s) è uno strumento per orchestrare applicazioni containerizzate, automatizzandone l'implementazione, il ridimensionamento e il coordinamento in un cluster. Supporta le principali tecnologie di containerizzazione, incluso Docker. K8s è un software open source. OpenShift è un componente aggiuntivo di Kubernetes che offre funzionalità aggiuntive. Questo è un prodotto a pagamento, a differenza del K8, destinato all'uso aziendale. Fornisce DevOps pronto all'uso: supporto per i principali scenari di distribuzione blu/verde, canary, dispone di supporto integrato per Jenkins e fornisce strumenti utili per l'amministrazione e l'utilizzo del cluster. Ha un modello di sicurezza più rigoroso e un monitoraggio integrato. Per coloro che non vedono l'ora di programmare: Creare il pacchetto di un'applicazione Spring Boot in un contenitore Come distribuire Postgres in Docker e connettersi a un'applicazione Spring-Boot Webinar: Docker: come lavorare con i contenitori? — Sviluppo backend in Java
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION