Reading Time: 4 minutes

 

Kubernetes è un orchestratore di applicazioni. Per la maggior parte, orchestra app di microservizi cloud containerizzate. Vediamo insieme cosa si intende per orchestratore e app containerizzata.

Che cos’è un orchestratore?

Un orchestratore è un sistema che distribuisce (deploy) e gestisce le applicazioni.

Può distribuire le applicazioni e rispondere dinamicamente alle modifiche. Ad esempio, Kubernetes può:

  • Deployare l’applicazione;
  • Ridimensionare in modo dinamico in base alle necessità;
  • Gestire gli errori quando le cose vanno male;
  • Eseguire aggiornamenti continui e rollback senza tempi di inattività;
  • Molto altro…

E la parte migliore di Kubernetes… fa tutto questo senza che si debba supervisionare o essere coinvolti, automaticamente.

Ovviamente, bisogna prima configurare le cose, ma una volta che fatto, puoi sederti e lasci che Kubernetes faccia la sua magia.

Che cos’è un’app containerizzata?

Un’applicazione containerizzata è un’app che viene eseguita in un container.

Prima che venissero introdotti i container, le applicazioni venivano eseguite su server fisici o macchine virtuali.

I container sono solo la successiva iterazione di come “impacchettiamo” ed eseguiamo le app. I container, sono più veloci, più leggeri e più adatti ai moderni requisiti aziendali rispetto a server e macchine virtuali.

Pensiamo in questo modo:

  • Le app venivano eseguite su server fisici nell’era dei sistemi aperti (anni ’80 e ’90);
  • Le app venivano eseguite su macchine virtuali nell’era della virtualizzazione (anni 2000 e 2010);
  • Le app vengono eseguite in container nell’era cloud-native (ora).

Sebbene Kubernetes possa orchestrare altri carichi di lavoro, incluse macchine virtuali e funzioni serverless, è più comunemente usato per orchestrare app containerizzate.

Che cos’è un’app cloud-native?

Un’applicazione nativa per il cloud (cloud-native) è progettata per soddisfare le esigenze simili al cloud, ovvero scalabilità automatica, riparazione automatica, aggiornamenti in sequenza, rollback e altro ancora.

È importante essere chiari sul fatto che le app cloud-native non sono applicazioni che verranno eseguite solo nel cloud pubblico.

Infatti possono essere eseguite anche su cloud pubblici, ma anche ovunque ci sia un cluster Kubernetes, persino nei nostri data center locali.

Quindi, cloud-native riguarda il modo in cui le applicazioni si comportano e reagiscono agli eventi.

Che cos’è un’app a microservizi?

Un’app a microservizi è costituita da molte parti piccole, specializzate e indipendenti che interagiscono per formare un’applicazione significativa.

Ad esempio, pensiamo ad un’app di e-commerce che comprende tutti i seguenti componenti piccoli, specializzati e indipendenti:

  • front-end Web;
  • Servizio catalogo;
  • Carrello della spesa;
  • Servizio di autenticazione;
  • Servizio di registrazione;
  • Negozio.

Ciascuno di questi singoli servizi è chiamato microservizio.

In genere, ognuno è codificato e di proprietà di un diverso team di sviluppo, ognuno può avere il proprio ciclo di rilascio e può essere sviluppato in modo indipendente.

Ad esempio, puoi applicare patch e ridimensionare il microservizio del carrello degli acquisti senza influire su nessuno degli altri.

La creazione di applicazioni in questo modo è fondamentale per le funzionalità cloud-native.

Per la maggior parte, ogni microservizio viene eseguito in un container.

Ad esempio in questa app di e-commerce con i 6 microservizi, ci sarebbero uno o più container di front-end web, uno o più container di catalogo, uno o più container di carrello della spesa ecc.

Con tutte queste definizioni, riformuliamo la frase iniziale:

Kubernetes distribuisce e gestisce (orchestra) le applicazioni che sono pacchettizzate ed eseguite come container (containerizzate) e che sono costruite in modi (microservizi cloud-native) che consentono loro di scalare, auto-ripararsi ed essere aggiornati, in linea con i moderni requisiti del mondo cloud.

Da dove viene Kubernetes?

Amazon Web Services (AWS) ha cambiato il mondo quando ci ha portato il moderno cloud computing.

Da allora, è stata una rincorsa continua.

Una delle aziende che cercava di recuperare il ritardo era Google. Google ha il suo ottimo cloud e ha bisogno di un modo per astrarre il valore di AWS e rendere più facile per i potenziali clienti uscire da AWS e accedere al proprio cloud.

Google ha anche molta esperienza nell’utilizzo di container su larga scala. Ad esempio, le enormi applicazioni di Google, come Search e Gmail, sono state eseguite su larga scala, su container per molti anni, da molto prima che Docker introducesse container alla portata di tutti.

Per orchestrare e gestire queste app containerizzate, Google disponeva di un paio di tecnologie proprietarie interne chiamate Borg e Omega.

Ebbene, Google ha sviluppato le lezioni apprese da questi sistemi interni e ha creato una nuova piattaforma chiamata Kubernetes che ha donato alla neonata Cloud Native Computing Foundation (CNCF) nel 2014 come progetto open source.

Kubernetes consente due cose di cui Google e il resto del settore hanno bisogno.

  1. Infrastruttura astratta come AWS
  2. Semplifica lo spostamento delle applicazioni dentro e fuori i provider cloud

Dalla sua introduzione nel 2014, Kubernetes è diventata la tecnologia cloud-native più importante del pianeta.

Come molti dei moderni progetti cloud-native, è scritto in linguaggio Go, è sviluppato in modo open-source su GitHub, è discusso attivamente sui canali IRC, puoi seguirlo su Twitter e Slack (slack.k8s.io).

Non mancano inoltre incontri e conferenze regolari in tutto il pianeta.

error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.