Panoramica di Kubernetes e AKS

Completato

Mentre si esplorano i principi della containerizzazione per aumentare l'agilità e la densità dei carichi di lavoro nell'ambiente di elaborazione di Contoso, ci si rende conto che è necessario concentrarsi sull'orchestrazione dei contenitori, anziché sulla distribuzione di singoli contenitori. Anche se quest'ultima offre semplicità, non offre scalabilità e resilienza. Nella ricerca dell'orchestrazione dei contenitori, Kubernetes e AKS sono stati identificati rapidamente come i candidati più adatti per l'implementazione pianificata.

Che cos'è Kubernetes?

Kubernetes è una piattaforma open source estendibile basata su Linux per l'orchestrazione dei carichi di lavoro in contenitori. Per garantire la resilienza, una tipica distribuzione Kubernetes è costituita da più server in cluster, detti nodi. Alcuni di essi formano un piano di controllo, responsabile della gestione dei nodi rimanenti, in cui distribuire i carichi di lavoro. Per Kubernetes, questi carichi di lavoro sono costituiti da istanze di applicazioni in contenitori denominate pod.

Nota

Uno dei componenti principali del piano di controllo è il server API, che fornisce l'interfaccia per la configurazione e la gestione dei cluster Kubernetes.

Nota

Un pod corrisponde approssimativamente a un contenitore, anche se può includere più contenitori strettamente collegati in esecuzione nello stesso nodo del cluster.

In genere, i pod sono senza stato e non offrono funzionalità intrinseche di resilienza. Per implementare la disponibilità elevata e la ridondanza, è possibile effettuarvi il provisioning usando le distribuzioni. In genere, una distribuzione è costituita da più repliche di pod che condividono la stessa configurazione ed eseguono contenitori basati sulla stessa immagine. Kubernetes gestisce automaticamente il ciclo di vita dei pod all'interno di una distribuzione, ricreando gli eventuali nodi non riusciti tra i nodi del cluster disponibili in modo ottimale.

Le distribuzioni semplificano anche gli aggiornamenti alle immagini dei contenitori in esecuzione all'interno dei pod senza influire sulla disponibilità del carico di lavoro in contenitori. Definendo i budget di interruzione, si controlla il numero di repliche di pod che devono rimanere online durante il processo di aggiornamento.

Per la connessione diretta ai pod, è possibile implementare un altro tipo di risorsa Kubernetes nota come servizio. Ad esempio, un servizio consente di configurare una connettività esterna con carico bilanciato da Internet a un servizio Web ospitato in un gruppo di pod come parte della stessa distribuzione.

Kubernetes consente di isolare i pod, i servizi, le distribuzioni e molti altri componenti dei cluster in spazi dei nomi. Gli spazi dei nomi delineano limiti logici che consentono di ridurre l'accesso per creare, visualizzare o usare le risorse cluster.

Quali sono i vantaggi principali offerti da Kubernetes?

Kubernetes offre un modello di gestione coerente per un ambiente multi-contenitore che usa risorse di calcolo, rete e archiviazione condivise. Offre un modello di distribuzione e gestione dichiarativo, in cui si descrive la configurazione desiderata e si lascia che sia il piano di controllo di Kubernetes a gestirne l'implementazione.

Nota

Con il modello di gestione dichiarativo, si usano i file manifesto in formato YAML per eseguire il provisioning dei componenti di Kubernetes, ad esempio i pod, i servizi o le distribuzioni, modificarli ed eliminarli. È anche possibile usare le raccolte in pacchetto di file YAML, denominate chart Helm. Helm è un gestore di pacchetti per Kubernetes e facilita la distribuzione di carichi di lavoro più complessi nei cluster Kubernetes.

Kubernetes offre anche vantaggi come:

  • Riparazione automatica dei pod
  • Scalabilità automatica dei pod
  • Scalabilità automatica dei nodi del cluster automatico in scenari virtualizzati
  • Aggiornamento in sequenza e rollback automatizzati delle distribuzioni di pod
  • Individuazione automatica delle nuove distribuzioni di pod
  • Bilanciamento del carico tra i pod che eseguono gli stessi carichi di lavoro

Kubernetes consente di considerare un gruppo di server fisici o virtuali come una risorsa di calcolo unificata, ottimizzando contemporaneamente i server usando l'agilità e la densità dei carichi di lavoro in contenitori. Anche se Kubernetes semplifica la gestione dei contenitori, la sua amministrazione comporta molte attività di configurazione, gestione e manutenzione:

  • Operazioni come la distribuzione, il ridimensionamento, il bilanciamento del carico, la registrazione e il monitoraggio sono tutti facoltative. È responsabilità dell'utente identificare e implementare la configurazione ottimale a seconda delle esigenze specifiche.
  • Kubernetes non offre in modo nativo middleware, framework di elaborazione dati o database. È tuttavia possibile implementare qualsiasi funzionalità corrispondente usando i contenitori.
  • Si è responsabili della gestione dell'ambiente Kubernetes. È ad esempio necessario gestire gli aggiornamenti del sistema operativo e gli aggiornamenti di Kubernetes. È anche necessario gestire le risorse hardware disponibili per i nodi del cluster, ad esempio la rete, la memoria e lo spazio di archiviazione.

Nota

Le offerte di Kubernetes gestito, ad esempio AKS, riducono al minimo o addirittura eliminano alcune di queste problematiche.

Verifica delle conoscenze

1.

Durante la valutazione dell'idoneità dell'uso di Kubernetes per i carichi di lavoro in contenitori che si intende distribuire nell'ambiente Azure Stack HCI di Contoso, si è compreso che è necessario limitare gli utenti che usano lo stesso cluster Kubernetes dalla creazione, dalla visualizzazione o dall'uso di risorse in contenitori. Quale funzionalità di Kubernetes è consigliabile usare per limitare gli utenti?