
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
Kubernetes è un progetto open source (disponibile su kubernetes.io) eseguibile su numerosi ambienti, dai laptop ai cluster multinodo ad alta disponibilità, dai cloud pubblici ai deployment on-premise, dalle macchine virtuali alle soluzioni bare metal.
Per questo lab, l'uso di un ambiente gestito come Kubernetes Engine ti permette di concentrarti sulla tua esperienza con Kubernetes anziché sulla configurazione dell'infrastruttura sottostante. Kubernetes Engine è un ambiente gestito per il deployment delle applicazioni containerizzate. Offre le più recenti innovazioni disponibili sul mercato apportando significativi vantaggi in termini di produttività degli sviluppatori, efficienza delle risorse, automazione delle operazioni e flessibilità dell'open source per accelerare il time to market.
In questo lab imparerai a:
kubectl
.Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Avvia lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in prima persona, in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si apre una finestra popup per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.
Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
Fai clic su Avanti.
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
Puoi trovare la Password anche nel riquadro Dettagli lab.
Fai clic su Avanti.
Fai clic nelle pagine successive:
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. L'output contiene una riga che dichiara il PROJECT_ID per questa sessione:
gcloud
è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
Fai clic su Autorizza.
L'output dovrebbe avere ora il seguente aspetto:
Output:
Output:
Output di esempio:
gcloud
, in Google Cloud, fai riferimento alla Panoramica dell'interfaccia a riga di comando gcloud.
gcloud container clusters get-credentials io
per ripetere l'autenticazione.
L'esempio ha il layout seguente:
Ora che hai il codice, è il momento di provare Kubernetes!
Il modo più semplice per iniziare a utilizzare Kubernetes è l'uso del comando kubectl create
.
Kubernetes ha creato un deployment. Scoprirai maggiori informazioni sui deployment in seguito, per ora ti basterà sapere che i deployment mantengono i pod in esecuzione anche in caso di arresto dei nodi su cui vengono eseguiti.
In Kubernetes, tutti i container vengono eseguiti in pod.
kubectl get pods
per vedere il container nginx in esecuzione:kubectl expose
:Riassumiamo quanto fatto finora. Dietro le quinte, Kubernetes ha creato un bilanciatore del carico esterno a cui è associato un indirizzo IP pubblico. Qualsiasi client che contatta questo indirizzo IP pubblico viene instradato ai pod da cui dipende il servizio. In questo caso, si tratta del pod nginx.
kubectl get services
:ExternalIP
venga completato per il tuo servizio. Questo è normale: esegui nuovamente il comando kubectl get services
a intervalli regolari di alcuni secondi fino a quando il campo non viene completato.
Ecco fatto! Kubernetes supporta un flusso di lavoro facile e pronto per l'uso con i comandi kubectl
run ed expose.
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente un cluster Kubernetes ed esegui il deployment di un container Nginx, visualizzerai un punteggio di valutazione.
Dopo questa rapida panoramica di Kubernetes, è il momento di concentrarsi su ognuno dei componenti e delle astrazioni.
Il pod è l'elemento fondamentale di Kubernetes.
I pod rappresentano e contengono una raccolta di uno o più container. In generale, se hai più container con una forte dipendenza l'uno dall'altro, li pacchettizzerai in un unico pod.
In questo esempio vediamo un pod che contiene i container monolite e nginx.
I pod, inoltre, sono dotati di volumi. I volumi sono dischi dati la cui durata corrisponde alla durata del pod e che possono essere utilizzati dai container all'interno del pod. I pod forniscono uno spazio dei nomi condiviso per i contenuti, di conseguenza i due container nel nostro pod di esempio comunicano tra loro e condividono anche i volumi collegati.
I pod condividono inoltre uno spazio dei nomi di rete. Di conseguenza, ogni pod ha un indirizzo IP.
Passiamo ora a uno sguardo più approfondito sui pod.
Puoi creare i pod utilizzando file di configurazione pod. Dedica un momento a esplorare il file di configurazione del pod monolite.
L'output mostra il file di configurazione aperto:
Ci sono alcuni elementi da notare. Puoi vedere che:
kubectl
:kubectl get pods
per elencare tutti i pod in esecuzione nello spazio dei nomi predefinito:kubectl describe
per ricevere maggiori informazioni sul pod monolite:Vedrai molte informazioni sul pod monolite, tra cui l'indirizzo IP del pod e il log eventi. Queste informazioni saranno utili durante la risoluzione dei problemi.
Kubernetes facilita la creazione dei pod descrivendoli in file di configurazione e con informazioni facili da visualizzare durante l'esecuzione. A questo punto, puoi creare tutti i pod richiesti dal tuo deployment.
Per impostazione predefinita, ai pod viene allocato un indirizzo IP privato, non raggiungibile dall'esterno del cluster. Usa il comando kubectl port-forward
per mappare una porta locale su una porta all'interno del pod monolite.
Apri un secondo terminale Cloud Shell. Ora hai due terminali; su uno eseguirai il comando kubectl port-forward
sull'altro i comandi curl
.
Nel secondo terminale, esegui questo comando per configurare il port forwarding:
curl
:Ottimo! Il tuo container ti ha risposto con un amichevole "hello".
curl
per vedere cosa succede quando contatti un endpoint sicuro:Oh oh.
password
per accedere.L'accesso ha provocato l'emissione di un token JWT.
Alla richiesta della password dell'host, inserisci di nuovo la segretissima password password
.
Usa questo comando per copiare, quindi usa il token per contattare l'endpoint sicuro con curl
:
A questo punto, dovresti ottenere una risposta dalla nostra applicazione, che ci fa sapere che ora tutto va di nuovo per il verso giusto.
kubectl logs
per visualizzare i log del pod monolith
.-f
per ottenere un flusso dei log in tempo reale:curl
nel primo terminale per interagire con il monolite, vedrai che i log vengono aggiornati (nel terzo terminale):kubectl exec
per eseguire una shell interattiva all'interno del pod monolite. Questo può essere utile per risolvere i problemi dall'interno di un container:ping
:Come puoi vedere, l'interazione con i pod si riassume nel comando kubectl
. Se devi contattare un container da remoto o aprire una shell di accesso, Kubernetes ti offre tutto ciò di cui hai bisogno per iniziare.
I pod non sono pensati per essere permanenti. Possono essere arrestati o avviati per vari motivi, tra cui il mancato superamento di controlli di attività o idoneità, e questo crea un problema:
Cosa succede se vuoi comunicare con un insieme di pod? Quando vengono riavviati, potrebbero avere un indirizzo IP diverso.
È qui che entrano in gioco i servizi. I servizi offrono endpoint stabili per i pod.
Per determinare su quali pod operano, i servizi si basano su etichette. Se i pod hanno le etichette corrette, vengono rilevati ed esposti automaticamente dai nostri servizi.
Il livello di accesso fornito da un servizio a un insieme di pod dipende dal tipo di servizio. Attualmente, sono disponibili tre tipi:
ClusterIP
(interno): il tipo predefinito, significa che questo servizio è visibile solo all'interno del cluster.NodePort
: fornisce a ogni nodo nel cluster un IP accessibile dall'esterno.LoadBalancer
: aggiunge un bilanciatore del carico dal cloud provider che inoltra il traffico dal servizio ai nodi al suo interno.Ora imparerai come:
Prima di poter creare i servizi, crea un pod sicuro in grado di gestire il traffico https.
~/orchestrate-with-kubernetes/kubernetes
:Ora che hai un pod sicuro, è il momento di esporre il pod secure-monolith all'esterno. Per farlo, crea un servizio Kubernetes.
(Output):
* È presente un selettore, utilizzato per trovare ed esporre automaticamente tutti i pod con le etichette "app: monolith" e "secure: enabled".
* Ora devi esporre qui la porta del nodo, perché è così che inoltrerai il traffico esterno dalla porta 31000 a nginx (sulla porta 443).
kubectl create
per creare il servizio monolite dal file di configurazione del servizio monolite:(Output):
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente i pod e il servizio monolite, visualizzerai un punteggio di valutazione.
Per esporre il servizio stai utilizzando una porta. Di conseguenza, sono possibili conflitti di porta se un'altra app tenta l'associazione alla porta 31000 su uno dei tuoi server.
Normalmente, l'assegnazione delle porte viene gestita da Kubernetes. In questo lab sei tu a scegliere una porta perché questo facilita la successiva configurazione dei controlli di integrità.
gcloud compute firewall-rules
per consentire il traffico al servizio monolite sulla porta del nodo esposta:Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente una regola firewall per autorizzare il traffico TCP sulla porta 31000, visualizzerai un punteggio di valutazione.
Ora che hai configurato tutto, dovresti poter contattare il servizio secure-monolith dall'esterno del cluster senza utilizzare il port forwarding.
curl
:Oh oh. Ha raggiunto il timeout. Che sta succedendo?
Nota: è il momento per un rapido controllo delle conoscenze.
Usa i comandi seguenti per rispondere alle domande:kubectl get services monolith
kubectl describe services monolith
Domande:
Suggerimento: il problema ha a che fare con le etichette. Lo correggerai nella sezione successiva.
Attualmente il servizio monolite non ha endpoint. Un modo per risolvere un problema di questo genere è utilizzare il comando kubectl get pods
con una query sulle etichette.
Nota che questa query sulle etichette non restituisce alcun risultato. Sembra che tu debba aggiungere l'etichetta "secure=enabled".
kubectl label
per aggiungere l'etichetta secure=enabled
mancante al pod secure-monolith. Dopodiché, potrai controllare e verificare che le etichette sono state aggiornate.Ce n'è uno!
Evviva! Houston, abbiamo un contatto.
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai aggiunto correttamente le etichette ai pod monolite, visualizzerai un punteggio di valutazione.
L'obiettivo di questo lab è prepararti alla scalabilità e alla gestione dei container in produzione. È qui che entrano in gioco i deployment. I deployment sono un metodo dichiarativo per assicurare che il numero di pod in esecuzione corrisponda al numero di pod desiderato, specificato dall'utente.
Il principale vantaggio dei deployment è l'astrazione dei dettagli di basso livello nella gestione dei pod. Dietro le quinte, i deployment usano set di replica per gestire l'avvio e l'arresto dei pod. Se è necessario aggiornare o scalare i pod, è il deployment a occuparsene. Il deployment gestisce inoltre il riavvio dei pod che si arrestano per qualsiasi motivo.
Guarda un esempio rapido:
I pod sono collegati alla durata del nodo su cui vengono creati. Nell'esempio precedente, Node3 si è arrestato (e di conseguenza anche un pod). Anziché creare manualmente un nuovo pod e trovare un nodo in cui ospitarlo, il deployment ha creato un nuovo pod e lo ha avviato su Node2.
Non male!
È il momento di combinare tutto ciò che hai appreso su pod e servizi per suddividere l'applicazione monolitica in servizi più piccoli utilizzando i deployment.
Suddividerai l'app monolitica in tre parti separate:
Ora è tutto pronto per la creazione dei deployment, uno per ciascun servizio. Successivamente, definirai i servizi interni per i deployment auth e hello e il servizio esterno per il deployment del frontend. Al termine sarai in grado di interagire con i microservizi proprio come con il monolite, con la differenza che ora è possibile scalare ed eseguire il deployment di ogni porzione in modo indipendente.
(Output)
Il deployment crea 1 replica: stai utilizzando la versione 2.0.0 del container auth.
Quando esegui il comando kubectl create
per creare il deployment auth, viene creato un pod conforme ai dati nel manifest del deployment. Ciò significa che puoi scalare il numero di pod modificando il valore specificato nel campo Repliche.
kubectl create
per creare il servizio auth:EXTERNAL-IP
è pending.In questo modo ottieni una risposta da hello.
Fai clic su Controlla i miei progressi qui sotto per verificare lo stato di avanzamento del lab. Se hai creato correttamente i deployment Auth, Hello e Frontend, visualizzerai un punteggio di valutazione.
Complimenti! Hai sviluppato un'applicazione multiservizio utilizzando Kubernetes. Le competenze che hai acquisito ti permetteranno di eseguire il deployment di applicazioni complesse su Kubernetes sfruttando una raccolta di deployment e servizi.
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 29 aprile 2024
Ultimo test del lab: 29 aprile 2024
Copyright 2025 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.
Questi contenuti non sono al momento disponibili
Ti invieremo una notifica via email quando sarà disponibile
Bene.
Ti contatteremo via email non appena sarà disponibile
One lab at a time
Confirm to end all existing labs and start this one