Configurazione e Avvio del Deployment Kubernetes
Ora che la tua applicazione funziona correttamente all'interno dei container, la prossima sfida è orchestrare e gestire questi container su larga scala. Qui entra in gioco Kubernetes.
Per iniziare, definirai lo stato desiderato della tua applicazione utilizzando file YAML. Un file descriverà un Deployment, che gestisce aggiornamenti e scalabilità, mentre un altro definirà un Service, che espone la tua applicazione alla rete e la rende accessibile agli utenti.
YAML (YAML Ain't Markup Language) è un formato leggibile dall'uomo per i file di configurazione. Viene spesso utilizzato per descrivere infrastrutture, automatizzare processi e memorizzare impostazioni delle applicazioni.
Un Deployment garantisce che il numero desiderato di istanze dell'applicazione (Pod) sia sempre in esecuzione e facilita il rilascio di aggiornamenti o il ripristino a versioni precedenti. Un Service espone questi container alla rete e distribuisce il traffico in ingresso tra di essi.
Esecuzione di Minikube
Minikube è uno strumento leggero che consente di eseguire un cluster Kubernetes locale sul proprio computer. Crea un ambiente virtuale in cui è possibile testare ed esplorare Kubernetes senza la necessità di servizi cloud.
Dopo aver installato Minikube e averlo aggiunto al PATH di sistema, aprire PowerShell (o il terminale preferito) ed eseguire:
Questo comando verifica se Minikube è disponibile e mostra la versione installata.
Dopo aver confermato che Minikube è installato, avvia il cluster Kubernetes locale con:
Questo comando crea e avvia un cluster Kubernetes locale sulla tua macchina. Scarica i componenti necessari e avvia il control plane e i nodi worker.
Deployment: Distribuzione dell'applicazione
Inizia creando il file deployment.yaml
. Un Deployment in Kubernetes garantisce che un numero specifico di Pod (istanze dell'applicazione) sia sempre in esecuzione e possa essere aggiornato o ripristinato senza tempi di inattività.
deployment.yaml
In questo manifesto, il parametro replicas specifica quante istanze di Pod devono essere eseguite contemporaneamente — in questo caso, due. Per sapere quali Pod gestire, il Deployment utilizza una combinazione di selector e label: il selector funge da filtro per trovare i Pod con una specifica label, e il template del Pod definisce quella label. Quando le label corrispondono, il Deployment considera quei Pod come propri e si occupa di mantenerne il numero, aggiornarli e riavviarli se necessario.
Tutti i Pod operano sulla porta 3000. Possono utilizzare tutti la stessa porta perché ogni Pod funziona nel proprio spazio di rete isolato, quindi non c'è conflitto tra di loro.
Service: Accesso di rete all'applicazione
Una volta che il Deployment è stato creato, è necessario un Service per fornire accesso di rete e bilanciamento del carico tra i Pod. Creare il file service.yaml
:
service.yaml
Questo manifest definisce un Service chiamato my-app-service
che indirizza il traffico verso i Pod con l'etichetta app: my-app
. Ascolta sulla porta 80 esternamente e inoltra le richieste alla porta 3000 all'interno dei Pod.
Il tipo LoadBalancer
è importante perché espone l'applicazione all'esterno e distribuisce il traffico tra i Pod.
Distribuzione dell'applicazione in Kubernetes
Una volta che i file YAML sono pronti, possono essere applicati al cluster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Il comando kubectl apply -f
crea o aggiorna le risorse nel cluster in base al contenuto del file YAML.
Verifica dello stato
Dopo aver applicato i file di configurazione, è importante confermare che tutto sia stato distribuito come previsto. Poiché Pod e Service impiegano qualche istante per avviarsi, inizia elencando i Pod in esecuzione:
Se il file deployment.yaml
specifica replicas: 2
, due Pod dovrebbero comparire nell'output.
Per confermare che il Service sia in esecuzione e accessibile:
Questo mostrerà l’indirizzo IP del Service e le porte attraverso cui è possibile accedere all’applicazione.
Ottieni l'URL del Servizio
Per accedere alla tua applicazione, esegui il seguente comando in PowerShell o nel tuo terminale:
Questo comando chiede a Minikube di restituire l'URL in cui la tua applicazione è esposta. Minikube controlla il Service che hai creato (my-app-service
) e fornisce un link che puoi aprire nel browser.
Scalare l'Applicazione
Kubernetes semplifica la regolazione del numero di Pod in esecuzione senza interrompere l'applicazione.
Ad esempio, per scalare da 2 a 4 repliche:
Eseguendo nuovamente kubectl get pods
verranno ora elencati quattro Pod attivi.
Kubernetes offre strumenti potenti per la gestione di applicazioni containerizzate su qualsiasi scala.
Un Deployment garantisce che il numero corretto di Pod sia in esecuzione e può essere aggiornato o ripristinato facilmente.
Un Service espone l'applicazione alla rete e bilancia il traffico in ingresso.
I file di configurazione YAML rendono la configurazione chiara e leggibile, mentre i comandi kubectl
permettono di applicare e gestire queste configurazioni in tempo reale.
1. Qual è lo scopo principale di un Deployment in Kubernetes?
2. Perché più Pod possono essere eseguiti sulla stessa porta (ad esempio, 3000
) senza conflitti?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
What should I do if my pods are not starting as expected?
How can I update my application without downtime using Kubernetes?
Can you explain the difference between a Deployment and a Service in Kubernetes?
Awesome!
Completion rate improved to 3.7
Configurazione e Avvio del Deployment Kubernetes
Scorri per mostrare il menu
Ora che la tua applicazione funziona correttamente all'interno dei container, la prossima sfida è orchestrare e gestire questi container su larga scala. Qui entra in gioco Kubernetes.
Per iniziare, definirai lo stato desiderato della tua applicazione utilizzando file YAML. Un file descriverà un Deployment, che gestisce aggiornamenti e scalabilità, mentre un altro definirà un Service, che espone la tua applicazione alla rete e la rende accessibile agli utenti.
YAML (YAML Ain't Markup Language) è un formato leggibile dall'uomo per i file di configurazione. Viene spesso utilizzato per descrivere infrastrutture, automatizzare processi e memorizzare impostazioni delle applicazioni.
Un Deployment garantisce che il numero desiderato di istanze dell'applicazione (Pod) sia sempre in esecuzione e facilita il rilascio di aggiornamenti o il ripristino a versioni precedenti. Un Service espone questi container alla rete e distribuisce il traffico in ingresso tra di essi.
Esecuzione di Minikube
Minikube è uno strumento leggero che consente di eseguire un cluster Kubernetes locale sul proprio computer. Crea un ambiente virtuale in cui è possibile testare ed esplorare Kubernetes senza la necessità di servizi cloud.
Dopo aver installato Minikube e averlo aggiunto al PATH di sistema, aprire PowerShell (o il terminale preferito) ed eseguire:
Questo comando verifica se Minikube è disponibile e mostra la versione installata.
Dopo aver confermato che Minikube è installato, avvia il cluster Kubernetes locale con:
Questo comando crea e avvia un cluster Kubernetes locale sulla tua macchina. Scarica i componenti necessari e avvia il control plane e i nodi worker.
Deployment: Distribuzione dell'applicazione
Inizia creando il file deployment.yaml
. Un Deployment in Kubernetes garantisce che un numero specifico di Pod (istanze dell'applicazione) sia sempre in esecuzione e possa essere aggiornato o ripristinato senza tempi di inattività.
deployment.yaml
In questo manifesto, il parametro replicas specifica quante istanze di Pod devono essere eseguite contemporaneamente — in questo caso, due. Per sapere quali Pod gestire, il Deployment utilizza una combinazione di selector e label: il selector funge da filtro per trovare i Pod con una specifica label, e il template del Pod definisce quella label. Quando le label corrispondono, il Deployment considera quei Pod come propri e si occupa di mantenerne il numero, aggiornarli e riavviarli se necessario.
Tutti i Pod operano sulla porta 3000. Possono utilizzare tutti la stessa porta perché ogni Pod funziona nel proprio spazio di rete isolato, quindi non c'è conflitto tra di loro.
Service: Accesso di rete all'applicazione
Una volta che il Deployment è stato creato, è necessario un Service per fornire accesso di rete e bilanciamento del carico tra i Pod. Creare il file service.yaml
:
service.yaml
Questo manifest definisce un Service chiamato my-app-service
che indirizza il traffico verso i Pod con l'etichetta app: my-app
. Ascolta sulla porta 80 esternamente e inoltra le richieste alla porta 3000 all'interno dei Pod.
Il tipo LoadBalancer
è importante perché espone l'applicazione all'esterno e distribuisce il traffico tra i Pod.
Distribuzione dell'applicazione in Kubernetes
Una volta che i file YAML sono pronti, possono essere applicati al cluster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Il comando kubectl apply -f
crea o aggiorna le risorse nel cluster in base al contenuto del file YAML.
Verifica dello stato
Dopo aver applicato i file di configurazione, è importante confermare che tutto sia stato distribuito come previsto. Poiché Pod e Service impiegano qualche istante per avviarsi, inizia elencando i Pod in esecuzione:
Se il file deployment.yaml
specifica replicas: 2
, due Pod dovrebbero comparire nell'output.
Per confermare che il Service sia in esecuzione e accessibile:
Questo mostrerà l’indirizzo IP del Service e le porte attraverso cui è possibile accedere all’applicazione.
Ottieni l'URL del Servizio
Per accedere alla tua applicazione, esegui il seguente comando in PowerShell o nel tuo terminale:
Questo comando chiede a Minikube di restituire l'URL in cui la tua applicazione è esposta. Minikube controlla il Service che hai creato (my-app-service
) e fornisce un link che puoi aprire nel browser.
Scalare l'Applicazione
Kubernetes semplifica la regolazione del numero di Pod in esecuzione senza interrompere l'applicazione.
Ad esempio, per scalare da 2 a 4 repliche:
Eseguendo nuovamente kubectl get pods
verranno ora elencati quattro Pod attivi.
Kubernetes offre strumenti potenti per la gestione di applicazioni containerizzate su qualsiasi scala.
Un Deployment garantisce che il numero corretto di Pod sia in esecuzione e può essere aggiornato o ripristinato facilmente.
Un Service espone l'applicazione alla rete e bilancia il traffico in ingresso.
I file di configurazione YAML rendono la configurazione chiara e leggibile, mentre i comandi kubectl
permettono di applicare e gestire queste configurazioni in tempo reale.
1. Qual è lo scopo principale di un Deployment in Kubernetes?
2. Perché più Pod possono essere eseguiti sulla stessa porta (ad esempio, 3000
) senza conflitti?
Grazie per i tuoi commenti!