kubernetes

 

Kubernetes

Kubernetes (noto anche come K8s) è uno strumento di orchestrazione dei contenitori in grado di gestire grandi quantità di contenitori.

Cos'è Kubernetes? Storia e scopo

Kubernetes ha appena pochi anni e tuttavia ha già guadagnato una buona reputazione.
 Ciò potrebbe essere dovuto al suo
legame con il colosso tecnologico Google .
 Quando l’azienda lanciò il progetto open source, Kubernetes veniva sviluppato da alcuni dipendenti di Google, ma c’erano anche molti altri sviluppatori esterni che lavoravano al software.
 La prima versione di Kubernetes è stata rilasciata nel 2015.
 Oggi
questo strumento è compatibile con diverse piattaforme cloud come Azure e Amazon Web Services (AWS).

Tuttavia, Kubernetes è stato originariamente fortemente influenzato dai sistemi Borg e Omega di Google , utilizzati per gestire i cluster internamente.
 A quel punto le applicazioni cloud virtuali non venivano nemmeno prese in considerazione.
 È stata rilasciata una versione open source che ha reso pubblico lo sviluppo di Kubernetes.

Kubernetes è scritto in Go , un linguaggio di programmazione sviluppato da Google per l'utilizzo nel cloud, nonché per l'utilizzo con computer locali e data center on-premise .
 Questo impegno a supportare il cloud può essere visto anche nel continuo svilupp
o del progetto.
 Oggi, Google e molte altre società sotto l’egida della Cloud Native Computing Foundation stanno portando avanti questo progetto open source, insieme all’aiuto della sua vasta comunità.

 
 
Come funziona Kubernetes?

Kubernetes è un sistema di orchestrazione dei contenitori. Ciò significa che il software è pensato per gestire anziché creare contenitori.
 Kubernetes si affida a questo scopo
all'automazione dei processi .
 
Ciò rende più semplice per gli sviluppatori testare, mantenere e pubblicare le proprie applicazioni. L'architettura Kubernetes ha una chiara struttura gerarchica:

  • Contenitore : un contenitore contiene applicazioni e ambienti software.

  • Pod : questa unità nell'architettura Kubernetes raggruppa contenitori che devono funzionare insieme per un'applicazione.

  • Nodo : uno o più pod vengono eseguiti su un nodo, che può essere una macchina virtuale o fisica.

  • Cluster : più nodi sono raggruppati insieme in un cluster in Kubernetes.

Anche l'architettura Kubernetes si basa sul modello master/slave .
 I nodi vengono utilizzati come slave (ovvero le parti controllate del sistema).
 Sono gestiti e controllati dal master Kubernetes.

Le funzioni del master possono includere, ad esempio, l'assegnazione dei pod ai nodi.
 Attraverso
il monitoraggio continuo , il master può anche intervenire non appena un nodo fallisce e duplicarlo direttamente per compensare il disservizio.
 Lo stato attuale viene sempre confrontato con lo stato target e, se necessario, viene adeguato.
 Questi processi vengono eseguiti automat
icamente.
 Il master è anche il punto di accesso per gli amministratori.
 Possono quindi orchestrare i contenitori.
 
Il master e i nodi hanno ciascuno la propria struttura specifica.
 

Nodo Kubernetes

Questo slave (noto anche come minion) è un server fisico o virtuale su cui sono attivi uno o più contenitori. Il nodo contiene un ambiente runtime per i contenitori.
 È attivo anche il
Kubelet .
 
Questo è un componente che consente la comunicazione con il master.
 Inoltre avvia e arresta i contenitori.
 Kubelet utilizza cAdvisor che è un servizio per la registrazione dell'utilizzo delle risorse.
 Ciò è utile quando si conducono analisi.
 Infine c'è il
proxy Kube che viene utilizzato per bilanciamento del carico e consente di stabilire un proxy di rete utilizzando TCP e altri protocolli.

Master Kubernetes

Questo master è anche un server.
 Per garantire che i nodi vengano controllati e monitorati, il
controller manager viene eseguito sul master. Questo componente a sua volta raggruppa più processi:

  • Il controller del nodo monitora i nodi e interviene quando falliscono.

  • Il controller di replica garantisce che il numero di pod di destinazione sia sempre in esecuzione contemporaneamente.

  • Il controller degli endpoint gestisce l'oggetto endpoint che è responsabile dell'unione di servizi e pod.

  • L' account di servizio e il controller del token gestiscono lo spazio dei nomi e creano token di accesso API.

Accanto al gestore del controller è in esecuzione un database chiamato etcd .
 Questo database di valori-chiave memorizza la configurazione del cluster di cui è responsabile il master. Utilizzando il componente scheduler, il master può assegnare automaticamente i pod ai nodi.
 Quando ci si connette ad un nodo viene utilizzato il se
rver API integrato nel master.
 Ciò fornisce
un'interfaccia REST e scambia informazioni con il cluster tramite JSON.
 Ciò consente ad esempio ai diversi controller di accedere ai nodi.

Kubernetes e Docker: sono concorrenti?

È impossibile rispondere alla domanda se sia meglio utilizzare Kubernetes o Docker .
 Questo perché la questione non si pone nemmeno.

 Si utilizzano i due programmi insieme
.
  Docker (o un'altra piattaforma container come rkt) è responsabile della creazione e dell'esecuzione del container su Kubernetes.
 Kubernetes accede a questi contenitori e ne orchestra e automatizza i processi.
 Tuttavia, non può creare contenitori da solo
.

Compete solo con Docker Swarm .
 Questo è uno strumento di orchestrazione creato da Docker.
 Questo strumento funziona anche con i cluster e offre funzioni simili a Kubernetes.

Applicazioni pratiche di Kubernetes e suoi vantaggi

Oggi Kubernetes svolge un ruolo importante nello sviluppo di software, soprattutto quando si tratta di progetti agili.
 L'orchestrazione dei container semplifica il
ciclo di sviluppo, test e distribuzione (nonché tutti i passaggi intermedi).
 Kubernetes ti consente di spostare facilmente i contenitori da un ambiente all'altro automatizzando molti processi di lavoro.

Anche la scalabilità è importante, soprattutto quando si affitta spazio di archiviazione cloud esterno.
 Per ridurre i costi, Kubernetes può ottimizzare l'uso delle risorse.
 Invece di mantenere in funzione le macchine non necessarie, Kubernetes può liberare queste risorse e ut
ilizzarle per altre attività o semplicemente non utilizzarle affatto, riducendo così i costi.
 Attraverso il ridimensionamento automatico, Kubernetes può garantire di non utilizzare più risorse del necessario.
 Tuttavia, è anche fondamentale essere in grado
di crescere rapidamente.
 Quando pubblichi per la prima volta il tuo software, potrebbe non essere possibile stimare correttamente quale sarà la quantità di traffico.
 Kubernetes può fornire rapidamente ulteriori istanze in modo che il sistema non si blocchi
in caso di traffico eccezionalmente elevato.

Un altro vantaggio di Kubernetes è che consente di connettere più piattaforme .
 È possibile, ad esempio, utilizzarlo in un cloud ibrido
.
 In questa situazione il sistema si trova in parte sui propri server locali e in parte in un data center remoto (ovvero il cloud).
 Ciò a sua volta aumenta ulteriormente la scalabilità.
 Se sono necessarie più risorse, di solito possono essere aggiunte tra
mite il provider cloud in modo rapido e semplice.

Infine, Kubernetes aiuta gli sviluppatori a rimanere sempre aggiornati .
 Ogni container è chiaramente contrassegnato e fornisce informazioni sullo stato di ogni singola istanza. Kubernetes fornisce anche il controllo della versione.
 Ciò significa che puoi tenere traccia di ulteriori aggiornamenti e rintracciarli.
 Uno dei p
rincipali vantaggi di questo sistema è il modo in cui vengono rilasciati gli aggiornamenti.
 Le nuove versioni possono essere implementate in modo tale da evitare tempi di inattività.
 Per fare ciò, i pod vengono aggiornati gradualmente anziché essere aggior
nati tutti in una volta.
 Ciò vale sia per la versione di prova interna che per la nuova versione rilasciata per gli utenti finali.

Poiché Kubernetes gestisce la maggior parte dell'orchestrazione in modo indipendente, ci sono meno ostacoli legati al lavoro.
 È considerato un sistema sicuro.
 I tempi di inattività sono rari e, nel caso in cui un pod non funzioni, il master Kubernetes può
accedervi direttamente e sostituirlo.

 

 

no image
  • Titolo : kubernetes
  • Etichette :