Che cos'è il servizio Azure Kubernetes?

Completato

Si inizierà con alcune definizioni e una rapida presentazione del servizio Azure Kubernetes. Questa panoramica fornisce informazioni utili per decidere se il servizio Azure Kubernetes è una piattaforma valida per la strategia di gestione della containerizzazione.

Che cos'è un contenitore?

Un contenitore è un'unità atomica di software che raggruppa in un pacchetto il codice, le dipendenze e la configurazione per un'applicazione specifica. I contenitori consentono di suddividere applicazioni monolitiche in singoli servizi che costituiscono la soluzione. Questa riprogettazione dell'applicazione consente di distribuire i singoli servizi tramite i contenitori.

Diagram that shows server or application replicated as containers for cloud deployment.

Perché usare un contenitore?

Si supponga che la soluzione di rilevamento delle risorse includa tre applicazioni principali:

  • Un sito Web di rilevamento che include mappe e informazioni sulle risorse tracciate.

  • Un servizio di elaborazione dati che raccoglie ed elabora le informazioni inviate dalle risorse rilevate.

  • Un database MSSQL per archiviare le informazioni sul cliente acquisite dal sito Web.

Ci si rende conto che, per soddisfare le esigenze dei clienti, è necessario aumentare il numero di istanze della soluzione.

Macchine virtuali

Un'opzione è quella di distribuire una nuova macchina virtuale per ogni applicazione, ospitata in più aree geografiche. Quindi si copiano le applicazioni nelle nuove macchine virtuali. Tuttavia, in questo modo si diventa responsabili della gestione di ogni macchina virtuale usata.

I costi per la manutenzione aumentano man mano che si dimensiona la soluzione. È necessario effettuare il provisioning e la configurazione delle versioni e delle dipendenze del sistema operativo delle macchine virtuali per ogni applicazione in modo che corrispondano. Quando si applicano aggiornamenti per le applicazioni che interessano il sistema operativo e le modifiche principali, occorre prendere delle precauzioni. Se durante l'aggiornamento si verificano errori, è necessario ripristinare lo stato precedente dell'installazione, causando interruzioni, come tempi di inattività o ritardi.

Diagram that shows replicated servers as VMs in the cloud and how the problem raises migration questions and problems.

La distribuzione illustrata nel diagramma precedente è complessa, talvolta soggetta a errori e non consente di dimensionare facilmente i singoli servizi. Non è possibile, ad esempio, dimensionare facilmente solo il servizio di caching usato nell'applicazione Web. I contenitori consentono di risolvere questi tipi di problemi.

Il concetto di contenitore offre tre vantaggi principali:

  1. Immutabilità: la natura immutabile di un contenitore consente di distribuirlo ed eseguirlo in modo affidabile con lo stesso comportamento da un ambiente di calcolo a un altro. Un'immagine del contenitore testata in un ambiente di controllo di qualità è la stessa immagine del contenitore distribuita in produzione.

  2. Dimensioni inferiori: un contenitore è simile a una macchina virtuale, ma senza il kernel per ogni computer. Viene invece condiviso un kernel host. Le macchine virtuali usano un file di immagine di grandi dimensioni per archiviare sia il sistema operativo che l'applicazione da eseguire. Al contrario, un contenitore non richiede un sistema operativo ma solo l'applicazione.

  3. Leggerezza: il contenitore si basa sempre sul sistema operativo host installato per i servizi specifici del kernel. La proprietà lightweight rende i contenitori meno a elevato utilizzo di risorse, quindi l'installazione di più contenitori è possibile all'interno dello stesso ambiente di calcolo.

  4. L'avvio è veloce : l'avvio dei contenitori è di pochi secondi, a differenza delle macchine virtuali, che possono richiedere minuti per l'avvio.

I vantaggi precedenti rendono i contenitori una scelta comune per gli sviluppatori e le operazioni IT e sono il motivo per cui molti hanno abbandonato le macchine virtuali.

Che cos'è la gestione dei contenitori?

Diagram that shows replicated servers as multiple containers in the cloud.

Anche se dal punto di vista funzionale i contenitori sono simili alle macchine virtuali, i loro scopi sono diversi. Un contenitore ha un ciclo di vita distinto perché esiste come computer temporaneo. Il suo stato passa attraverso le fasi di sospensione, esecuzione e terminazione. Questo ciclo di vita rende i contenitori più facilmente eliminabili e influisce sul modo in cui gli sviluppatori e le operazioni IT considerano la gestione di applicazioni interconnesse di grandi dimensioni. La gestione dei contenitori comporta la distribuzione, l'aggiornamento, il monitoraggio e la rimozione dei contenitori.

Si supponga, ad esempio, di scoprire che a mezzogiorno è presente più traffico del sito, quindi sono necessarie più istanze del servizio di memorizzazione nella cache del sito per gestire le prestazioni. Si pensa di risolvere questo problema aggiungendo altri contenitori del servizio di caching.

È il momento di implementare una nuova versione del servizio di caching. Come aggiornare tutti i contenitori? Come rimuovere tutte le versioni precedenti?

Questi tipi di domande sul bilanciamento del carico rendono necessario un sistema per gestire la distribuzione dei contenitori.

Che cos'è Kubernetes?

Kubernetes è una piattaforma open source portatile e flessibile per l'automazione della distribuzione, il ridimensionamento e la gestione dei carichi di lavoro in contenitori. Kubernetes astrae la gestione complessa dei contenitori e offre una configurazione dichiarativa per orchestrare i contenitori in ambienti di calcolo diversi. Questa piattaforma di orchestrazione offre la stessa facilità d'uso e la stessa flessibilità delle offerte di piattaforme distribuite come servizio (PaaS) e di infrastrutture distribuite come servizio (IaaS).

Diagram that shows replicated servers as multiple containers in a Kubernetes cluster.

Kubernetes consente di visualizzare il data center come un unico computer di grandi dimensioni. Non è necessario preoccuparsi del modo e della posizione in cui distribuire i contenitori, ma solo di distribuire e ridimensionare le applicazioni in base alle esigenze.

Ecco alcuni aspetti aggiuntivi da tenere presenti su Kubernetes:

  • Kubernetes non è un'offerta PaaS completa. Funziona a livello di contenitore e offre solo un set comune di funzionalità PaaS.

  • Kubernetes non è monolitico. Non si tratta di una singola applicazione installata. Operazioni come la distribuzione, il ridimensionamento, il bilanciamento del carico, la registrazione e il monitoraggio sono tutti facoltative.

  • Kubernetes non limita i tipi di applicazioni da eseguire. Se l'applicazione può essere eseguita in un contenitore, viene eseguita in Kubernetes.

  • Gli sviluppatori devono comprendere concetti come l'architettura dei microservizi per usare in modo ottimale le soluzioni contenitore.

  • Kubernetes non offre middleware, framework di elaborazione dati, database, cache o sistemi di archiviazione cluster. Tutti questi elementi vengono eseguiti come contenitori o come parte di un'altra offerta di servizio.

  • Una distribuzione Kubernetes è configurata come cluster. Un cluster è costituito da almeno un computer o piano di controllo primario e da uno o più computer di lavoro. Per le distribuzioni di produzione, la configurazione preferita è una distribuzione a disponibilità elevata con 3-5 computer del piano di controllo replicati. I computer di lavoro sono chiamati anche nodi o nodi agenti.

Con tutti i vantaggi offerti da Kubernetes, sarà necessario individuare la soluzione più adatta alle proprie esigenze per eseguire le operazioni desiderate. Tenere presente che si è responsabili della gestione del cluster Kubernetes. Ad esempio, è necessario gestire gli aggiornamenti del sistema operativo e l'installazione e gli aggiornamenti di Kubernetes. È anche necessario gestire la configurazione hardware dei computer host, ad esempio la rete, la memoria e l'archiviazione.

Nota

Kubernetes viene talvolta abbreviato in K8s. L'8 rappresenta gli otto caratteri compresi tra la K e la s della parola K[ubernete]s.

Che cos'è il servizio Azure Kubernetes?

Diagram that shows replicated servers as multiple containers in an AKS Kubernetes cluster.

Il servizio Azure Kubernetes gestisce l'ambiente Kubernetes ospitato e facilita la distribuzione e la gestione di applicazioni in contenitori in Azure. L'ambiente del servizio Azure Kubernetes include funzionalità come gli aggiornamenti automatici, la riparazione automatica e la scalabilità semplificata. Azure gestisce gratuitamente il piano di controllo del cluster Kubernetes. È necessario gestire i nodi degli agenti nel cluster e si paga solo per le macchine virtuali in cui sono in esecuzione i nodi.

È possibile creare e gestire il cluster nel portale di Azure o con l'interfaccia della riga di comando di Azure. Quando si crea il cluster, è possibile automatizzarne la creazione usando i modelli di Resource Manager. Questi modelli consentono di accedere a funzionalità quali opzioni di rete avanzate, Microsoft Entra Identity e monitoraggio delle risorse. È quindi possibile configurare trigger ed eventi per automatizzare la distribuzione del cluster per più scenari.

Con il servizio Azure Kubernetes si ottengono i vantaggi offerti da Kubernetes open source senza l'aggiunta di complessità o sovraccarico operativo che possono comportare solo Kubernetes.