This is the Trace Id: f315cb89daf55bd9b249eecdb50b382a
Passa a contenuti principali
Azure
sfondo sfumato

Che cos'è Kubernetes?

Scopri come eseguire i contenitori automatizzando distribuzione, gestione e scalabilità.

Definizione di Kubernetes

Kubernetes è un software open source che automatizza la distribuzione, la gestione e il dimensionamento delle applicazioni in contenitori. Orchestra cluster di macchine virtuali, pianifica i contenitori e offre ripristino automatico, bilanciamento del carico e portabilità tra ambienti.

Punti chiave

  • Kubernetes è una piattaforma che ti aiuta a eseguire, controllare ed espandere i carichi di lavoro dei container su più server in un cluster.
  • Raggruppa i contenitori in Pod, con una pianificazione del piano di controllo e i controller che mantengono lo stato desiderato.
  • Gestisce individuazione dei servizi, bilanciamento del carico, scalabilità automatica e ripristino automatico (riavvii, sostituzioni e ripianificazione).
  • I team lo usano per rilasci portabili tra ambienti e per tenere traccia delle metriche di integrità e stabilità.

Descrizione di Kubernetes

Kubernetes è un software open source DevOps usato per distribuire, gestire e ridimensionare i contenitori in un cluster. Docker, un'altra tecnologia open source, è il formato predefinito dei file dei contenitori comunemente usato insieme a Kubernetes.

Contenitori

I contenitori raggruppano un'app con le relative dipendenze e la configurazione, per poter essere eseguita in modo coerente in ambienti diversi. A mano a mano che un'applicazione si evolve, potresti eseguire molti contenitori su diversi server e coordinare tutto manualmente diventa complicato. Kubernetes affronta questa complessità con un'API open source e un sistema di controllo che decide cosa deve essere eseguito e dove e lo mantiene in esecuzione.

Cosa fa Kubernetes per te

Pianificazione e posizionamento delle risorse

Kubernetes orchestra un cluster di macchine virtuali e pianifica l'esecuzione dei contenitori in base alle risorse di calcolo disponibili e ai requisiti di risorse di ogni contenitore.

Individuazione dei servizi e bilanciamento del carico

Kubernetes gestisce l'individuazione dei servizi e il bilanciamento del carico, per fare in modo che il traffico venga indirizzato ai Pod giusti, anche quando i Pod cambiano nel tempo.

Scalabilità per adattarsi alla domanda

Kubernetes aumenta o riduce la scalabilità dei carichi di lavoro in base all'utilizzo delle risorse di calcolo e allo stato desiderato impostato.

Auto-riparazione quando si verificano problemi

Kubernetes verifica l'integrità delle risorse e può riavviare o replicare i contenitori quando si verificano problemi. Riavvia o sostituisce i contenitori non riusciti e blocca il traffico finché i carichi di lavoro non sono pronti.

Supporta modifiche controllate

Kubernetes supporta modelli di distribuzione per le applicazioni in esecuzione, incluse implementazioni e ripristini dello stato precedente automatici basati sullo stato desiderato che descrivi.

Gestione della configurazione e dei segreti

Kubernetes offre la gestione di segreti e configurazioni per informazioni sensibili come password o token.

Orchestrazione dell'archiviazione

Kubernetes può montare i sistemi di archiviazione che scegli (ad esempio, archiviazione locale oppure opzioni cloud pubbliche), in base al modello di orchestrazione dell'archiviazione di Kubernetes.

Un rapido glossario degli oggetti

Kubernetes si basa su oggetti API, risorse che dichiari e gestisci. Ecco alcuni esempi:

  • Pod: l'unità di base che esegue uno o più contenitori.

  • Service: un modo stabile per esporre un'app e indirizzare il traffico verso Pod che cambiano.

  • Distribuzione: un modo per descrivere lo stato desiderato di un'app e aggiornarlo nel tempo (spesso collegata a implementazione e ripristino dello stato precedente).

  • Nodo: una macchina nel cluster in cui vengono eseguiti i Pod.

  • Piano di controllo: componenti che gestiscono lo stato del cluster e le decisioni di pianificazione.

Come si incastra tutto

  1. Dichiari lo stato desiderato per la tua applicazione (cosa deve essere eseguito, quante copie, quali risorse sono necessarie).

  2. Il piano di controllo registra ed esegue questa richiesta tramite l'API di Kubernetes e l'archivio di supporto.

  3. L'utilità di pianificazione inserisce i Pod nei nodi con risorse sufficienti.

  4. I componenti del nodo eseguono il carico di lavoro.

  5. I controller riconciliano continuamente lo stato reale con lo stato desiderato, eseguendo il ridimensionamento, la sostituzione e l'aggiornamento dei carichi di lavoro secondo necessità.

Architettura di Kubernetes

I componenti di base

Cluster: piano di controllo più nodi di lavoro

In genere, un cluster Kubernetes viene descritto in due parti: un piano di controllo che gestisce il cluster e nodi di lavoro che eseguono i carichi di lavoro.

Componenti del piano di controllo

Questi componenti gestiscono lo stato complessivo del cluster:

  • kube-apiserver: espone l'API HTTP di Kubernetes (la porta di ingresso per le richieste).

  • etcd: un archivio chiave-valore coerente e a disponibilità elevata per i dati del cluster.

  • kube-scheduler: trova i Pod che devono essere posizionati e li assegna a un nodo.

  • kube-controller-manager: esegue i controller che riconciliano lo stato reale con lo stato desiderato.

  • cloud-controller-manager (opzionale): collega Kubernetes alla logica di controllo specifica del provider cloud.

Componenti del nodo

Ogni nodo di lavoro esegue software che mantiene i Pod e le regole di rete:

  • kubelet: garantisce che i Pod siano in esecuzione sul nodo, inclusi i relativi contenitori.

  • kube-proxy (facoltativo): mantiene le regole di rete per supportare i servizi.

  • runtime contenitore: esegue i container sul nodo.

Pod: l'unità di lavoro di base

Kubernetes non pianifica direttamente i singoli container, in senso astratto. Raggruppa uno o più contenitori in un Pod, che diventa l'unità operativa di base. I Pod poi aumentano o diminuiscono verso lo stato desiderato che definisci.

In pratica, questo significa:

  1. Descrivi l'app che vuoi eseguire.

  2. Kubernetes pianifica i Pod sulle macchine con risorse di calcolo disponibili.

  3. I controller mantengono il cluster orientato verso lo stato richiesto.

Rete dei servizi

I Pod possono comparire e scomparire, quindi Kubernetes offre elementi di base da poter combinare per descrivere ed eseguire applicazioni in un cluster, che forniscono modi stabili per raggiungere i carichi di lavoro.

Elementi di base di rete dei pod

A ogni Pod viene assegnato un indirizzo IP univoco a livello di cluster e i Pod possono comunicare tra nodi senza Network Address Translation (NAT) nel modello di rete di Kubernetes.

Servizi

L'API Service fornisce un indirizzo IP o un nome host stabile per un set di Pod back-end, anche quando i singoli Pod cambiano nel tempo.

EndpointSlice

Kubernetes mantiene gli oggetti EndpointSlice per tenere traccia di quali Pod supportano attualmente un servizio.

API Ingress/Gateway

Per esporre servizi ai client esterni al cluster, Kubernetes supporta l'API Gateway (e Ingress come suo predecessore).

Servizi LoadBalancer

Alcuni ambienti possono esporre un servizio all'esterno usando il tipo di servizio LoadBalancer.

Componenti aggiuntivi da poter eseguire in un cluster

I cluster Kubernetes spesso includono componenti aggiuntivi che estendono le funzionalità oltre i componenti principali. Ad esempio:

  • DNS per la risoluzione dei nomi a livello di cluster.

  • Interfaccia utente Web (dashboard) per la gestione del cluster.

  • Monitoraggio delle risorse del contenitore per la raccolta delle metriche.

  • Registrazione a livello di cluster per raccogliere i log in modo centralizzato.

Come funziona Kubernetes?

Kubernetes esegue applicazioni in contenitori in un cluster di macchine e le mantiene nello stato che descrivi. Lo fa assegnando il lavoro alle macchine giuste, indirizzando il traffico verso le destinazioni corrette e controllando errori e modifiche.

Il flusso di base

1. Descrivi ciò che vuoi eseguire

La maggior parte dei carichi di lavoro Kubernetes inizia come uno "stato desiderato" dichiarato (cosa deve essere in esecuzione, quante copie e come devono essere esposti). Kubernetes si basa su configurazione dichiarativa e automazione.

2. Kubernetes decide dove deve essere eseguito

Kubernetes pianifica i contenitori sulle macchine del cluster in base alle risorse di calcolo disponibili e a ciò di cui ha bisogno ogni contenitore. I contenitori vengono eseguiti all'interno dei Pod, che sono l'unità che Kubernetes colloca su una macchina.

3. Kubernetes controlla continuamente la realtà rispetto allo stato desiderato

I controller osservano il cluster e lavorano per avvicinare lo stato corrente allo stato desiderato, usando il server API per apportare modifiche.

Pianificazione dei contenitori e gestione quotidiana

La pianificazione consiste nella decisione "Dove deve essere eseguito?" ".

1. Si pianificano i Pod, non i singoli contenitori

Kubernetes raggruppa i contenitori in Pod e poi colloca quei Pod sulle macchine.

2. L'utilità di pianificazione i Pod a un nodo adatto

kube-scheduler cerca i Pod che non sono ancora assegnati e seleziona un nodo per loro.

3. Gli agenti del nodo mantengono in esecuzione i Pod

Su ogni nodo, kubelet si assicura che i Pod siano in esecuzione (compresi i relativi contenitori).

Bilanciamento del carico e individuazione dei servizi

I contenitori e i Pod possono essere creati, spostati o sostituiti, quindi le applicazioni hanno bisogno di modi stabili per trovarsi tra loro.

L'individuazione dei servizi e il bilanciamento del carico sono comportamenti integrati

Kubernetes gestisce l'individuazione dei servizi e usa il bilanciamento del carico per fare in modo che il traffico venga instradato anche quando i Pod cambiano nel tempo.

I servizi forniscono un indirizzo stabile per un insieme di Pod che cambia

L'API Service fornisce un indirizzo IP o un nome host stabile per un servizio supportato da uno o più Pod e Kubernetes tiene traccia dei Pod di supporto tramite oggetti EndpointSlice.

Aggiornamenti dell'instradamento del traffico quando i Pod cambiano

Quando i Pod dietro un servizio cambiano, l'instradamento del servizio si adatta in modo che il traffico continui a raggiungere i back-end correnti.

Rendere scalabili le applicazioni (e perché lo "stato desiderato" è importante)

Kubernetes può rendere scalabili i carichi di lavoro verso lo stato impostato, incluso il ridimensionamento in base all'utilizzo del calcolo.

Le idee di scalabilità più comuni includono:

  • Più repliche (più Pod) per gestire una domanda più elevata.

  • Meno repliche quando la domanda diminuisce.

  • Monitoraggio delle risorse in modo che le decisioni di posizionamento riflettano le esigenze di CPU e memoria.

Questo si collega al modello di "stato desiderato": specifichi il target e i controller continuano a lavorarci.

Auto-riparazione: cosa succede quando qualcosa si rompe

Kubernetes include comportamenti di auto-riparazione che mirano a mantenere l'integrità e la disponibilità dei carichi di lavoro. Sono inclusi:

  • Riavvio dei contenitori non riusciti (riavvii a livello di contenitore).

  • Sostituzione dei Pod non riusciti per mantenere il numero richiesto di repliche (sostituzione delle repliche).

  • Riassegnazione dei carichi di lavoro quando i nodi diventano non disponibili.

  • Rimozione dei Pod non riusciti dagli endpoint servizio in modo che il traffico vada solo ai Pod integri (bilanciamento del carico per i servizi).

L'auto-riparazione controlla l'integrità dei contenitori e li riavvia o li replica quando si verificano problemi.

Il ruolo dei KPI di Kubernetes

Gli indicatori di prestazioni chiave (KPI o metriche) vengono usati per comprendere lo stato del cluster e il comportamento dei carichi di lavoro.

Da dove provengono i KPI

  • I componenti di sistema di Kubernetes emettono metriche (formato Prometheus) utili per dashboard e avvisi.

  • Le metriche in genere sono disponibili nell'endpoint HTTP /metrics di un componente, inclusi componenti come kube-apiserver, kube-scheduler, kubelet, kube-proxy e kube-controller-manager.

Esempi di ciò che i KPI aiutano a individuare

  • Indicatori di integrità del cluster (metriche a livello di componente e modelli di errore)

  • Stabilità del carico di lavoro (ad esempio, riavvii o sostituzioni frequenti)

  • Pressione sulla capacità (allocazione delle risorse rispetto alla domanda, collegata alle decisioni di scalabilità)

Perché è importante nelle operazioni quotidiane

Il monitoraggio offre ai team una visione più completa delle risorse del cluster, dell'API di Kubernetes, dei contenitori e dei log, riducendo il ciclo di feedback tra problemi e correzioni.

Vantaggi e casi d'uso

Kubernetes viene spesso scelto quando i team hanno bisogno di un modo coerente per eseguire molti contenitori su più macchine, mantenendo però l'instradamento del traffico, la scalabilità e il ripristino gestiti dalla piattaforma.

Scalabilità

Kubernetes può ridimensionare i carichi di lavoro, cioè aumentarli o ridurli in base alla domanda, verso uno stato target e può ridimensionare in base all'utilizzo del calcolo.

Casi d'uso comuni

  • App web con traffico variabile (campagne, picchi stagionali): regola il numero di repliche in base al carico.

  • Elaborazione in batch o basata su eventi: aggiungi capacità per i picchi, poi riduci la scala.

  • Microservizi: ridimensiona servizi specifici senza ridimensionare tutta l'applicazione.

Efficienza delle risorse

Kubernetes supporta il bin packing automatico, ovvero il posizionamento dei contenitori sui nodi in base alle esigenze di CPU e memoria per sfruttare meglio le risorse disponibili. Tiene anche traccia dell'allocazione delle risorse mentre gestisce i carichi di lavoro.

Casi d'uso comuni

  • Cluster condivisi per più team: riduci la capacità sprecata collocando i carichi di lavoro dove le risorse sono disponibili.

  • Cluster con carichi di lavoro misti (servizi più processi): mantieni i nodi occupati senza un posizionamento manuale.

Individuazione dei servizi e bilanciamento del carico

Kubernetes può esporre i carichi di lavoro usando DNS o un indirizzo IP e può distribuire il traffico di rete per mantenere stabili le distribuzioni. Gestisce anche l'individuazione dei servizi e integra il bilanciamento del carico quando i carichi di lavoro.

Casi d'uso comuni

  • Comunicazione tra microservizi: i servizi si trovano tramite nomi stabili mentre i Pod cambiano.

  • API interne dietro un endpoint stabile: instrada il traffico solo verso i back-end attivi.

Auto-riparazione

Kubernetes è progettato per sostituire i contenitori guasti, ripianificare i carichi di lavoro quando i nodi non sono disponibili e mantenere lo stato desiderato. Gli esempi includono il riavvio dei contenitori, la sostituzione delle repliche e la rimozione dei Pod non integri dagli endpoint del servizio per fare in modo che il traffico vada solo verso Pod integri.

Casi d'uso comuni

  • Servizi sempre attivi: riavvia o sostituisci le istanze con errori senza intervento manuale.

  • Cluster con frequente rotazione dei nodi: ripianifica i carichi di lavoro quando un nodo va offline.

  • Servizi di supporto: interrompi l'instradamento del traffico verso i Pod non integri.

Versioni più sicure

Kubernetes supporta implementazioni e ripristini dello stato precedente automatizzati. Definisci lo stato desiderato e Kubernetes porta lo stato effettivo verso di esso a una velocità controllata.

Casi d'uso comuni

  • Aggiornamenti frequenti delle applicazioni: distribuisci le modifiche gradualmente, poi ripristina se necessario.

  • Team che rilasciano più servizi: mantieni coerenti le meccaniche di rilascio tra le app.

Portabilità

Le app in contenitori sono separate dall'infrastruttura e Kubernetes aiuta a spostarle dai computer locali alla produzione in ambienti locali, serverless, cloud ibrido e multi-cloud, mantenendo la coerenza tra gli ambienti.

Casi d'uso comuni

  • Parità tra sviluppo/test/produzione: mantieni lo stesso modello di packaging e pianificazione tra gli ambienti.

  • Distribuzioni ibride: esegui parti di un sistema in locale e parti nel cloud con lo stesso approccio di orchestrazione.

Inizia a usare Kubernetes

Kubernetes offre un modo comune per eseguire carichi di lavoro in contenitori con configurazione dichiarativa e automazione di machine learning, supportato da un ampio ecosistema di strumenti e da una community in continua crescita.

Perché è ancora importante per le app native del cloud

A mano a mano che i team costruiscono sistemi composti da molti servizi, carichi lavoro di breve durata e aggiornamenti frequenti, Kubernetes resta una base pratica perché si concentra sulle operazioni ripetibili:

  • Operazioni coerenti tra ambienti (contenitori in pacchetti con le dipendenze, eseguiti nello stesso modo in tutti gli ambienti).

  • Un ecosistema ampio e attivo, con servizi, supporto e strumenti ampiamente disponibili.

  • Estendibilità tramite componenti aggiuntivi creati dalla community, plug-in e un programma di conformità che mantiene coerenti le API core tra le versioni.

Se stai sviluppando o eseguendo carichi di lavoro, servizio Azure Kubernetes (AKS) ti aiuta a distribuire e gestire applicazioni in contenitori, mentre Azure gestisce il piano di controllo.

sfondo sfumato
Risorse
Sviluppo

Risorse di Azure

Esplora la tecnologia più recente per sviluppatori e scopri nuove competenze.
Formazione

Introduzione a Kubernetes

Questo corso ti guida tra i tipi di problemi di business che puoi risolvere usando Kubernetes.
Istruzione

Microsoft Azure for Students

Ottieni competenze per dare slancio alla tua carriera e avere un impatto positivo sul mondo.
Domande frequenti

Domande frequenti

  • Kubernetes viene usato per distribuire, gestire e ridimensionare app in contenitori in un cluster. Pianifica i carichi di lavoro in base alla capacità di calcolo disponibile, instrada il traffico con l'individuazione dei servizi e il bilanciamento del carico e aiuta a mantenere in esecuzione le app riavviando o sostituendo i contenitori guasti.
  • Kubernetes in genere viene usato da sviluppatori e amministratori di piattaforma che eseguono applicazioni in contenitori. Se vuoi ridurre la manutenzione del piano di controllo, un servizio gestito, come il servizio Azure Kubernetes (AKS), può occuparsi del piano di controllo mentre tu ti concentri sui nodi e sulle app.
  • Sì. Kubernetes può eseguire app in contenitori in infrastrutture locali e supporta anche configurazioni ibride e multi-cloud. I contenitori restano portabili perché l'app viene pacchettizzata separatamente dalle macchine sottostanti.
  • Può volerci tempo perché ci sono diversi concetti fondamentali (cluster, nodi, Pod, servizi). Inizia dalle basi, poi fai pratica distribuendo una piccola app e segui un percorso di apprendimento guidato per acquisire sicurezza.