Hai davvero bisogno di Kubernetes (K8s)?

0
48

Kubernetes ha la reputazione di essere complicato. Sebbene sia un software fantastico, a volte i vantaggi potrebbero non superare la complessità aggiuntiva, soprattutto per le piccole imprese che gestiscono implementazioni semplici. Il vecchio Docker è abbastanza buono?

In cosa è bravo Kubernetes

Kubernetes (K8s) è usato molto spesso con Docker in ambito professionale ambienti e questo può far sembrare che sia una versione aggiornata o più organizzata di Docker. Sebbene questo sia vero per alcuni aspetti, non è lo scopo esatto dei K8.

Kubernetes è un “sistema di orchestrazione dei contenitori,” ed è importante ricordare cosa significa. Il piano di controllo di Kubernetes gestisce tutti i dettagli di “orchestrazione” quali contenitori verranno eseguiti su quali nodi. Separa l'hardware dal software e consente alle tue macchine di funzionare come nodi di lavoro, che idealmente è tutto ciò che dovrebbero davvero essere.

Kubernetes è fantastico quando si dispone di un'ampia distribuzione di produzione che deve essere in grado di scalare, riparare e gestirsi automaticamente. Quando gestisci centinaia di container su molti server, dover gestire il bilanciamento del carico e spostare i container da un server all'altro può diventare fastidioso. K8s gestisce questo per te con opzioni di configurazione extra.

Grafica che mostra l'architettura del cluster Kubernetes

Kubernetes è anche simile all'infrastruttura come codice (IaC), un altro concetto utile. Ti consente di controllare i tuoi servizi utilizzando file di configurazione che possono essere tracciati tramite Git. Ciò può migliorare drasticamente i processi di distribuzione consentendone il monitoraggio lungo le filiali, il test, la versione e il rollback se necessario.

Che cos'è Kubernetes&#8217 ;t Fantastico a

Il principale svantaggio di Kubernetes è che è notoriamente complicato. Questo potrebbe non essere un grosso problema se lo conosci già, ma in ogni caso aggiunge ulteriore tempo e complessità per far funzionare le tue applicazioni. È un ottimo strumento per imparare e una buona abilità da avere. Ma funziona meglio con distribuzioni più grandi e se stai eseguendo solo pochi server o pochi container, lo sforzo extra di Kubernetes potrebbe non valerne la pena.

Kubernetes è un intermediario, ma puoi sempre andare alla vecchia scuola e assumere tu stesso il ruolo di orchestratore. La cosa bella di Docker è che semplifica il processo di creazione e spostamento delle applicazioni con la containerizzazione. La creazione di un nuovo server è relativamente semplice e potresti avere una nuova istanza EC2 da AWS che esegue il tuo container in pochi minuti.

Senza Kubernetes, l'unico problema aggiuntivo che hai è la necessità di eseguire i comandi manualmente sui tuoi server con la Docker CLI o l'API Docker Compose. Se devi aggiungere un nuovo container o spostare un container su un altro nodo, dovrai eseguire nuovamente quei comandi. Questo può essere un problema se, ad esempio, hai riscontrato un traffico inaspettatamente elevato e hai bisogno di avviare automaticamente più istanze. I K8 risolverebbero quel problema. Ma in molti casi, il tuo traffico potrebbe essere relativamente stabile, o almeno prevedibile su base settimanale, soprattutto per i servizi di back-end che non hanno realmente bisogno di scalare automaticamente.

In sostanza, Docker stesso migliora già notevolmente il processo di esecuzione delle applicazioni portatili. È un enorme miglioramento rispetto al dover installare le applicazioni alla vecchia maniera. Kubernetes migliora un po' Docker e automatizza alcune attività necessarie per le grandi reti, ma aggiunge molta complessità.

Il suo valore dipenderà da quanto tempo ti farà risparmiare effettivamente. Se questa complessità è accettabile per te e finisce per farti risparmiare tempo, dovresti usare K8s, ma se non lo fa, non dovresti sprecare il tuo tempo con esso, specialmente quando puoi sempre semplicemente passare a in seguito, se necessario.

Cosa dovresti usare invece?

È bello fare un passo indietro e guardare a cosa stai davvero considerando Kubernetes. Se vuoi che la tua rete si ridimensioni automaticamente, gestisca automaticamente le tue risorse e avvii pod su server diversi in base alla configurazione, Kubernetes è un ottimo strumento per imparare. Se sei preoccupato per la complessità, i fornitori di servizi cloud come AWS hanno gestito i servizi Kubernetes come EKS, che possono gestire parte del lavoro sporco per te, soprattutto quando si tratta di gestione e fornitura delle risorse.

Tuttavia, se tutto ciò che desideri è un modo per gestire i tuoi container più facilmente o per aggiornare automaticamente i container, ci sono strumenti molto più semplici disponibili per il lavoro. Potrebbero non avere tutte le funzionalità di Kubernetes, ma saranno più semplici e ti faranno risparmiare tempo.

Se desideri ridimensionare automaticamente determinati servizi, dovrai quasi sempre parlare con l'API di un provider di servizi cloud per eseguire il provisioning di nuove risorse. Kubernetes può gestirlo per te per molte piattaforme, ma servizi come AWS, Azure e GCP hanno tutti servizi container semplici con funzionalità di scalabilità automatica. Il servizio ECS di AWS può essere facilmente configurato per la scalabilità automatica per soddisfare la domanda elevata.

RELAZIONATO: Come iniziare con le distribuzioni di container con scalabilità automatica su AWS ECS

Se devi aggiornare automaticamente i contenitori ogni volta che esegui il push di nuove versioni nel registro Docker, puoi utilizzare un servizio come Watchtower. Viene eseguito su un nodo di lavoro come servizio Docker stesso, con il socket Docker esposto, e controlla le modifiche. Una volta inviato un nuovo container, Watchtower riavvierà il container. Ciò ti farà risparmiare tempo nell'esecuzione dei riavvii dei container ed è una buona alternativa agli aggiornamenti di Kubernetes.

docker run –detach –name watchtower –volume /var/run/docker.sock:/var/run/docker .sock containerrrr/watchtower

Se vuoi essere più organizzato in generale con il modo in cui gestisci i tuoi container, dovresti considerare di configurare una GUI di gestione Docker come Portainer. Portainer è una GUI basata sul Web per la gestione delle implementazioni Docker. Funziona con più nodi di lavoro, proprio come Kubernetes, ma ti consente di gestire il lavoro di orchestrazione, impostando i container sui server che desideri.

Portainer è davvero facile da configurare poiché è confezionato come un contenitore stesso. Se desideri saperne di più, puoi leggere la nostra guida per configurarlo e utilizzarlo.

RELAZIONATO: Come iniziare con Portainer , un'interfaccia utente Web per Docker

LEGGI SUCCESSIVO

  • › Revisione della scheda di acquisizione NZXT Signal 4K30: filmati di alta qualità senza perdita di dati
  • › I 10 migliori film originali Netflix del 2022
  • › T-Mobile sta vendendo la tua attività sulle app: ecco come rinunciare
  • › “Atari era molto, molto difficile” Nolan Bushnell su Atari, 50 anni dopo
  • › Quanto lontano può arrivare un'auto elettrica con una sola carica?
  • › Quanto costa ricaricare una batteria?