Tutorial Kubernetes per principianti: nozioni di base, funzionalità, Architectura

Prima di iniziare questo tutorial su Kubernetes, impariamo:

Che cos'è Kubernetes?

kubernetes è un sistema di gestione dei container sviluppato sulla piattaforma Google. Kubernetes aiuta a gestire le applicazioni containerizzate in vari tipi di ambienti fisici, virtuali e cloud. Google Kubernetes è uno strumento di container altamente flessibile per distribuire in modo coerente applicazioni complesse in esecuzione su cluster di centinaia o migliaia di singoli server.

Perché hai bisogno di contenitori?

L'utente Internet di oggi non accetta mai i tempi di inattività. Pertanto gli sviluppatori devono trovare un metodo per eseguire la manutenzione e l'aggiornamento senza interrompere i propri servizi.

Pertanto, un contenitore è un ambiente isolato. Include tutto il necessario per l'esecuzione di un'applicazione. Semplifica la modifica e la distribuzione delle app per gli sviluppatori. Inoltre, la containerizzazione è diventata un metodo preferenziale per il packaging, la distribuzione e l'aggiornamento delle app web.

Quali attività vengono eseguite da Kubernetes?

Kubernetes è il kernel Linux utilizzato per i sistemi distribuiti. Ti aiuta a rendere astratto l'hardware sottostante dei nodi (server) e offre un'interfaccia coerente per le applicazioni che consumano il pool condiviso di risorse.

Perché utilizzare Kubernetes?

Kubernetes ti aiuta a controllare l'allocazione delle risorse e la gestione del traffico per le applicazioni cloud e i microservizi. Aiuta anche a semplificare vari aspetti delle infrastrutture orientate ai servizi. Kubernetes ti consente di garantire dove e quando verranno eseguite le applicazioni containerizzate e ti aiuta a trovare le risorse e gli strumenti con cui desideri lavorare.

Caratteristiche di Kubernetes

Ecco le funzionalità essenziali di Kubernetes:

  • Pianificazione automatizzata
  • Capacità di autoguarigione
  • Implementazioni e rollback automatizzati
  • Scalabilità orizzontale e bilanciamento del carico
  • Offre coerenza ambientale per lo sviluppo, il test e la produzione
  • L'infrastruttura è liberamente accoppiata e ciascun componente può agire come un'unità separata
  • Fornisce una maggiore densità di utilizzo delle risorse
  • Offre funzionalità pronte per l'azienda
  • Gestione incentrata sulle applicazioni
  • Infrastruttura scalabile automaticamente
  • Puoi creare un'infrastruttura prevedibile

Nozioni di base di Kubernetes

Ora in questo tutorial di Kubernetes impareremo alcune importanti nozioni di base di Kubernetes:

  • Cluster

    È una raccolta di host (server) che ti aiuta ad aggregare le risorse disponibili. Ciò include ram, CPU, ram, disco e i relativi dispositivi in ​​un pool utilizzabile.

  • Master

    Il master è un insieme di componenti che compongono il pannello di controllo di Kubernetes. Questi componenti vengono utilizzati per tutte le decisioni del cluster. Include sia la pianificazione che la risposta agli eventi del cluster.

  • Nodo

    È un singolo host in grado di funzionare su un supporto fisico o macchina virtuale. Un nodo dovrebbe eseguire sia kube-proxy, minikube e kubelet che sono considerati parte del cluster.

  • Spazio dei nomi

    È un cluster o ambiente logico. È un metodo ampiamente utilizzato per definire l'ambito dell'accesso o dividere un cluster.

kubernetes Architectura

Di seguito è riportato uno schema dettagliato dell'architettura di Kubernetes:

kubernetes Archidiagramma della struttura
kubernetes Archidiagramma della struttura

Nodo principale

Il nodo master è il primo e più vitale componente responsabile della gestione del cluster Kubernetes. È il punto di ingresso per tutti i tipi di attività amministrative. Potrebbe esserci più di un nodo master nel cluster per verificare la tolleranza agli errori.

Il nodo master ha vari componenti come API Server, Controller Manager, Scheduler ed ETCD. Vediamoli tutti.

Server API: Il server API funge da punto di ingresso per tutti i comandi REST utilizzati per il controllo del cluster.

Scheduler

Lo scheduler pianifica le attività sul nodo slave. Memorizza le informazioni sull'utilizzo delle risorse per ogni nodo slave. È responsabile della distribuzione del carico di lavoro.

Ti aiuta anche a tenere traccia del modo in cui viene utilizzato il carico di lavoro sui nodi del cluster. Ti aiuta a posizionare il carico di lavoro sulle risorse disponibili e ad accettare il carico di lavoro.

ecc

I componenti etcd memorizzano i dettagli della configurazione e i valori Wright. Comunica con la maggior parte dei componenti per ricevere comandi e lavorare. Gestisce inoltre le regole di rete e l'attività di port forwarding.

Nodi lavoratore/slave

I nodi di lavoro sono un altro componente essenziale che contiene tutti i servizi necessari per gestire il networking tra i contenitori, comunicare con il nodo master, che consente di assegnare risorse ai contenitori pianificati.

  • Kubelet: ottiene la configurazione di un Pod dal server API e garantisce che i contenitori descritti siano attivi e funzionanti.
  • Contenitore Docker: docker il contenitore viene eseguito su ciascuno dei nodi di lavoro, che esegue i pod configurati
  • Kube-proxy: Kube-proxy funge da bilanciatore del carico e proxy di rete per eseguire il servizio su un singolo nodo di lavoro
  • Pod: un pod è una combinazione di contenitori singoli o multipli che vengono eseguiti logicamente insieme sui nodi

Altre terminologie chiave

Controller di replica

Un controller di replica è un oggetto che definisce un modello di pod. Controlla inoltre i parametri per ridimensionare orizzontalmente le repliche identiche del pod aumentando o diminuendo il numero di copie in esecuzione.

Set di replica

I set di replica rappresentano un'interazione sulla progettazione del controller di replica con flessibilità nel modo in cui il controller riconosce i pod che deve gestire. Sostituisce i controller di replica grazie alla loro maggiore capacità di selezione delle repliche.

Distribuzioni

La distribuzione è un carico di lavoro comune che può essere creato e gestito direttamente. La distribuzione utilizza il set di replica come elemento costitutivo che aggiunge la funzionalità di gestione del ciclo di vita.

Insiemi con stato

È un controllo pod specializzato che offre ordine e unicità. Viene utilizzato principalmente per avere un controllo granulare, di cui hai particolare bisogno per quanto riguarda l'ordine di distribuzione, la rete stabile e i dati persistenti.

Set di demoni

I set di daemon sono un'altra forma specializzata di controller pod che esegue una copia di un pod su ogni nodo del cluster. Questo tipo di controller pod è un metodo efficace per la distribuzione dei pod che consente di eseguire la manutenzione e offre servizi per i nodi stessi.

Kubernetes contro Docker Swarm

Ecco le differenze importanti tra Kubernetes contro Docker.

Parametro Sciame portuale kubernetes
scalata Nessuna scalabilità automatica Ridimensionamento automatico
Bilancio del carico Esegue il bilanciamento automatico del carico Configura manualmente le impostazioni di bilanciamento del carico
Condivisione del volume di archiviazione Condivide i volumi di archiviazione con qualsiasi altro contenitore Condivide i volumi di archiviazione tra più contenitori all'interno dello stesso Pod
Utilizzo dello strumento di accesso e monitoraggio Usa 3rd strumento per feste come ELK Fornire uno strumento integrato per la registrazione e il monitoraggio.
SERVIZIO DI Facile e veloce Complicato e dispendioso in termini di tempo
GUI GUI non disponibile La GUI è disponibile
Scalabilità Lo scale up è più veloce di K8S, ma la forza del cluster non è altrettanto solida L'incremento è lento rispetto a Swarm, ma garantisce uno stato del cluster più forte. Il bilanciamento del carico richiede la configurazione manuale del servizio
Bilancio del carico Fornisce una tecnica di bilanciamento del carico incorporata Pianificazione dei processi per mantenere i servizi durante l'aggiornamento
Aggiornamenti e rollback Registrazione e monitoraggio dei volumi di dati Aggiornamenti progressivi e monitoraggio dello stato del servizio. Condiviso solo con contenitori nello stesso pod Strumenti di registrazione e monitoraggio integrati.

Vantaggi di Kubernetes

  • Facile organizzazione del servizio con le cialde
  • È sviluppato da Google, che porta sul tavolo anni di preziosa esperienza nel settore
  • La più grande comunità tra gli strumenti di orchestrazione dei contenitori
  • Offre una varietà di opzioni di storage, tra cui on-premise, SAN e cloud pubblici
  • Aderisce ai principi dell'infrastruttura immutabile
  • Kubernetes può eseguire bare metal on-premise, OpenStack e cloud pubblici Google, Azure, AWS, ecc.
  • Ti aiuta a evitare problemi di blocco del fornitore poiché può utilizzare qualsiasi API o servizio specifico del fornitore, tranne nei casi in cui Kubernetes fornisce un'astrazione, ad esempio bilanciamento del carico e archiviazione.
  • La containerizzazione tramite Kubernetes consente al software in pacchetto di raggiungere questi obiettivi. Abiliterà le applicazioni che devono essere rilasciate e aggiornate senza tempi di inattività.
  • Kubernetes ti consente di garantire che le applicazioni containerizzate vengano eseguite dove e quando vuoi e ti aiuta a trovare risorse e strumenti con cui desideri lavorare.

Svantaggi di Kubernetes

  • Il dashboard Kubenetes non è così utile come dovrebbe essere
  • Kubernetes è un po' complicato e non necessario negli ambienti in cui tutto lo sviluppo viene eseguito localmente.
  • La sicurezza non è molto efficace.

Sintesi

  • Il contenitore aiuta un'organizzazione a eseguire la manutenzione e l'aggiornamento senza interrompere i servizi
  • Kubernetes è un esempio di sistema di gestione dei contenitori sviluppato nella piattaforma Google.
  • Il più grande vantaggio dell'utilizzo di Kubernetes è che può eseguire OpenStack on-premise, cloud pubblici Google, Azure, AWS, ecc.
  • Kubernetes offre funzionalità di pianificazione automatizzata e di autoriparazione.
  • Cluster, master, nodo e spazio dei nomi sono elementi di base importanti di Kubernetes
  • Il nodo master e il nodo di lavoro sono componenti importanti dell'architettura Kubernetes.
  • Controller di replica, set di replica, distribuzioni, set con stato, set di daemon sono altri termini importanti utilizzati in Kubernetes.
  • Lo sciame Docker non consente la scalabilità automatica mentre Kubernetes consente la scalabilità automatica.
  • Il più grande svantaggio di Kubenetes è che la sua dashboard non è molto utile ed efficace

Riassumi questo post con: