Checkpoint
Deploy GKE clusters
/ 30
Deploy Pods to GKE clusters
/ 35
Deploy a new pod using a Yaml file
/ 35
Deployment di cluster GKE Autopilot da Cloud Shell
Panoramica
In questo lab utilizzerai la riga di comando per creare i cluster GKE. Ispezionerai il file kubeconfig e utilizzerai kubectl
per manipolare il cluster.
Obiettivi
In questo lab imparerai a:
- Utilizzare
kubectl
per creare e manipolare i cluster GKE - Utilizzare
kubectl
e i file di configurazione per eseguire il deployment dei pod - Utilizzare Container Registry per archiviare container ed eseguirne il deployment
Configurazione del lab
Accedi a Qwiklabs
Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.
-
Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.
-
Tieni presente la durata dell'accesso al lab (ad esempio,
1:15:00
) e assicurati di finire entro quell'intervallo di tempo.
Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio. -
Quando è tutto pronto, fai clic su Inizia lab.
-
Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.
-
Fai clic su Apri console Google.
-
Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi. -
Accetta i termini e salta la pagina di ripristino delle risorse.
Una volta completati i passaggi di accesso iniziali, viene visualizzata la dashboard del progetto.
Apri Cloud Shell
Svolgerai la maggior parte del lavoro in Cloud Shell. Cloud Shell è un ambiente a riga di comando in esecuzione in Google Cloud. Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di gestione di cui hai bisogno (come docker
, gcloud, gsutil
e kubectl
) e fornisce una home directory permanente da 5 GB.
- Nella barra del titolo della console Google Cloud, fai clic su Attiva Cloud Shell ().
- Fai clic su Continua.
Dopo il provisioning, viene visualizzato il prompt di Cloud Shell:
Attività 1: esegui il deployment dei cluster GKE
In questa attività utilizzerai Cloud Shell per eseguire il deployment dei cluster GKE.
- In Cloud Shell, digita questo comando per impostare la variabile di ambiente per il nome della zona e del cluster:
- In Cloud Shell, digita questo comando per creare un cluster Kubernetes:
Questa forma di comando imposta la maggior parte delle opzioni sui valori predefiniti. Per visualizzare l'intero insieme di possibili opzioni, consulta il riferimento gcloud container clusters create.
Vedrai una serie di avvisi che evidenziano le modifiche alle impostazioni predefinite del cluster GKE che sono state introdotte man mano che versioni più recenti di Kubernetes sono state adottate da GKE.
Al termine del deployment, la pagina Kubernetes Engine > Cluster della console Google Cloud dovrebbe essere simile a questo screenshot:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Attività 2: connettiti a un cluster GKE
In questa attività, utilizzerai Cloud Shell per eseguire l'autenticazione su un cluster GKE e quindi ispezionare i file di configurazione kubectl.
L'autenticazione in Kubernetes interessa sia la comunicazione con il cluster da un client esterno attraverso il kube-APIserver in esecuzione sul master, sia i container di cluster che comunicano all'interno del cluster o esternamente.
In Kubernetes, l'autenticazione può assumere diverse forme. Per GKE, l'autenticazione viene generalmente gestita con token OAuth2 e può essere gestita tramite Cloud Identity and Access Management in tutto il progetto e, facoltativamente, mediante controllo degli accessi basato sui ruoli, che può essere definito e configurato all'interno di ogni cluster.
In GKE, i container dei cluster possono utilizzare gli account di servizio per eseguire l'autenticazione e accedere alle risorse esterne.
- Per creare un file kubeconfig con le credenziali dell'utente corrente (per consentire l'autenticazione) e fornire i dettagli dell'endpoint per un cluster specifico (per consentire la comunicazione con questo cluster tramite lo strumento a riga di comando
kubectl
), esegui questo comando:
Questo comando comporta la creazione di una directory .kube
nella directory home, se non esiste già. Nella directory .kube
, il comando crea un file denominato config
, se non esiste già, utilizzato per archiviare le informazioni di autenticazione e configurazione. Il file di configurazione è in genere denominato kubeconfig.
- Apri il file kubeconfig con l'editor di testo nano:
Ora puoi esaminare tutti i dati di configurazione dell'autenticazione e dell'endpoint archiviati nel file. Dovrebbero essere visualizzate le informazioni relative al cluster. Le informazioni sono state compilate durante la creazione del cluster.
- Premi CTRL+X per uscire dall'editor nano.
kubectl
) viene indicato dalla proprietà current-context
.
Non devi eseguire il comando gcloud container clusters get-credentials
per completare il file kubeconfig per i cluster creati nello stesso contesto (lo stesso utente nello stesso ambiente), perché i dettagli di questi cluster sono già completati al momento della creazione del cluster. Tuttavia, devi eseguire il comando per connetterti a un cluster creato da un altro utente o in un altro ambiente. Il comando permette inoltre di cambiare facilmente il contesto attivo con un cluster diverso.
Attività 3: utilizza kubectl per ispezionare un cluster GKE
In questa attività utilizzerai Cloud Shell e kubectl per ispezionare un cluster GKE.
Una volta che il file kubeconfig è compilato e il contesto attivo è impostato su un determinato cluster, puoi utilizzare lo strumento a riga di comando kubectl
per eseguire i comandi sul cluster. La maggior parte di questi comandi attiva una chiamata API REST sul server API master, che attiva l'azione associata.
- In Cloud Shell, esegui questo comando per stampare i contenuti del file kubeconfig:
I dati sensibili del certificato sono sostituiti con DATA+OMITTED.
- In Cloud Shell, esegui questo comando per stampare le informazioni sul cluster per il contesto attivo:
L'output descrive il cluster di contesto attivo.
Output:
- In Cloud Shell, esegui questo comando per stampare il contesto attivo:
Una riga di output indica il cluster di contesto attivo.
Output:
PROJECT_ID
è l'ID progetto. Queste informazioni sono le stesse della proprietà current-context
del file kubeconfig.
- In Cloud Shell, esegui questo comando per stampare alcuni dettagli di tutti i contesti del cluster nel file kubeconfig:
Diverse righe di output indicano i dettagli del cluster creato e il cluster di contesto attivo. In generale, questo comando elenca alcuni dettagli dei cluster presenti nel file kubeconfig dell'utente, inclusi eventuali altri cluster creati dall'utente e qualsiasi altro aggiunto manualmente al file kubeconfig.
- In Cloud Shell, esegui questo comando per modificare il contesto attivo:
In questo caso disponi di un solo cluster, quindi questo comando non ha apportato alcuna modifica.
Tuttavia, in futuro potresti avere più di un cluster in un progetto. Puoi utilizzare questo approccio per cambiare il contesto attivo quando il file kubeconfig contiene le credenziali e la configurazione per diversi cluster già compilati. Questo approccio richiede il nome completo del cluster, che include il prefisso gke
, l'ID progetto, la posizione e il nome visualizzato, il tutto concatenato da trattini bassi.
- In Cloud Shell, esegui questo comando per abilitare il completamento automatico bash per
kubectl
:
Questo comando non produce alcun output.
- In Cloud Shell, digita kubectl seguito da uno spazio e premi due volte il tasto Tab.
La shell genera tutti i comandi possibili:
- In Cloud Shell, digita kubectl co e premi due volte il tasto Tab.
La shell genera tutti i comandi che iniziano con "co" (o altro testo digitato).
Attività 4: esegui il deployment dei pod nei cluster GKE
In questa attività utilizzerai Cloud Shell per eseguire il deployment dei pod nei cluster GKE.
Utilizza kubectl per eseguire il deployment di pod in GKE
Kubernetes introduce l'astrazione di un pod per raggruppare uno o più container correlati come una singola entità da pianificare e di cui eseguire il deployment come unità sullo stesso nodo. Puoi eseguire il deployment di un pod che è un singolo container da un'unica immagine container. Un pod può anche contenere molti container da molte immagini container.
- In Cloud Shell, esegui questo comando per eseguire il deployment di nginx come pod con nome nginx-1:
Questo comando crea un pod denominato nginx con un container che esegue l'immagine nginx. Quando non viene specificato un repository, il comportamento predefinito prevede di tentare di trovare l'immagine localmente o nel registro pubblico Docker. In questo caso, l'immagine viene estratta dal registro pubblico Docker.
- In Cloud Shell, esegui questo comando per visualizzare tutti i pod di cui è stato eseguito il deployment nel cluster di contesto attivo:
L'output dovrebbe essere simile al seguente esempio, ma con un nome di pod leggermente diverso.
Output:
- In Cloud Shell, esegui questo comando per visualizzare l'utilizzo delle risorse in tutti i nodi del cluster:
L'output dovrebbe essere simile all'esempio seguente.
Output:
Un altro comando top
(kubectl top pods
) mostra informazioni simili su tutti i pod di cui è stato eseguito il deployment nel cluster.
- Ora inserirai il nome del pod in una variabile che utilizzeremo in questo lab. L'utilizzo di variabili come questa può aiutare a ridurre al minimo gli errori umani durante la digitazione di nomi lunghi. Devi digitare il nome univoco del pod al posto di
[your_pod_name]
:
Esempio:
- Assicurati di aver impostato correttamente la variabile di ambiente tramite l'echo della shell:
Output:
- In Cloud Shell, esegui questo comando per visualizzare i dettagli completi del pod appena creato.
L'output dovrebbe essere simile all'esempio seguente. Vengono visualizzati i dettagli del pod, nonché i relativi stati e condizioni e gli eventi del suo ciclo di vita.
Output:
Esegui il push di un file in un container
Per poter pubblicare contenuti statici tramite il server web nginx, devi creare un file e inserirlo nel container.
- In Cloud Shell, digita i comandi seguenti per aprire un file denominato
test.html
nell'editor di testo nano:
- Aggiungi il seguente testo (script shell) al file
test.html
vuoto:
-
Premi CTRL+X, quindi premi Y e Invio per salvare il file e uscire dall'editor nano.
-
In Cloud Shell, esegui questo comando per inserire il file nella posizione appropriata all'interno del container nginx del pod nginx, in modo che venga pubblicato in modo statico:
Questo comando copia il file test.html
dalla home directory locale alla directory /usr/share/nginx/html
del primo container nel pod nginx. Puoi specificare altri container in un pod multi-container utilizzando l'opzione -c
, seguita dal nome del container.
Esponi il pod a scopo di test
Per esporre un pod ai clienti all'esterno del cluster, è necessario un servizio. I servizi vengono discussi altrove nel corso e utilizzati ampiamente in altri lab. Puoi utilizzare un semplice comando per creare un servizio ed esporre un pod.
- In Cloud Shell, esegui questo comando per creare un servizio che esponga esternamente il nostro pod nginx:
Questo comando crea un servizio LoadBalancer che consente di accedere al pod nginx da indirizzi internet esterni al cluster.
- In Cloud Shell, esegui questo comando per visualizzare i dettagli dei servizi nel cluster:
L'output dovrebbe essere simile all'esempio seguente. Potrai utilizzare l'indirizzo IP esterno nel passaggio successivo.
Output:
Il servizio Kubernetes è uno dei servizi predefiniti creati o utilizzati dal cluster. Viene visualizzato anche il servizio nginx che hai creato.
Potrebbe essere necessario eseguire questo comando più volte prima che venga visualizzato l'indirizzo IP esterno.
Output:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
- In Cloud Shell, esegui questo comando per verificare che il container nginx fornisca il file HTML statico copiato.
Sostituisci [EXTERNAL_IP] con l'indirizzo IP esterno del tuo servizio ottenuto dall'output del passaggio precedente.
I contenuti del file vengono visualizzati nell'output. Puoi accedere allo stesso indirizzo nel browser per visualizzare il file formattato in HTML.
Esempio:
- In Cloud Shell, esegui questo comando per visualizzare le risorse utilizzate dal pod nginx:
Output:
Attività 5: ispeziona i pod GKE
In questa attività, ti connetti a un pod per regolare le impostazioni, modificare i file e apportare altre modifiche in tempo reale al pod.
Prepara l'ambiente
Il modo migliore per eseguire il deployment di pod e altre risorse in Kubernetes è tramite file di configurazione, chiamati a volte file manifest. I file di configurazione sono generalmente scritti nella sintassi YAML, specificando i dettagli della risorsa. Con i file di configurazione, puoi specificare più facilmente opzioni complesse rispetto a una lunga riga di argomenti della riga di comando.
La sintassi YAML è simile alla sintassi JSON, ma più concisa, e consente lo stesso tipo di strutturazione gerarchica di oggetti e proprietà. Il repository di codice sorgente del lab contiene file YAML di esempio che sono stati preparati per te.
- In Cloud Shell, inserisci questo comando per clonare il repository nella sessione di Cloud Shell del lab:
- Crea un soft link da utilizzare come scorciatoia alla directory di lavoro:
- Passa alla directory che contiene i file di esempio per questo lab:
Ti è stato fornito un file YAML manifest di esempio per un pod chiamato new-nginx-pod.yaml
:
- Per eseguire il deployment del manifest, esegui questo comando:
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
- Per visualizzare un elenco di pod, esegui questo comando:
L'output dovrebbe essere simile all'esempio seguente.
Output:
Puoi visualizzare il tuo nuovo pod nginx, oltre a quello creato in precedenza nel lab.
Utilizza il reindirizzamento della shell per connetterti a un pod
Alcune immagini container includono un ambiente shell che puoi avviare. Questo ambiente shell potrebbe essere più pratico rispetto all'esecuzione di singoli comandi con kubectl
. Ad esempio, l'immagine nginx include una shell bash. In questa attività utilizzerai il reindirizzamento della shell per connetterti alla shell bash nel nuovo pod nginx ed eseguire una sequenza di azioni.
- In Cloud Shell, esegui questo comando per avviare una shell bash interattiva nel container nginx:
Viene visualizzato un nuovo prompt shell.
Output:
Hai avviato una shell bash interattiva nel container del nuovo pod nginx. Se il pod ha più container, puoi specificarne uno per nome con l'opzione -c
.
Poiché l'immagine container nginx non dispone di strumenti di modifica del testo per impostazione predefinita, devi installarne uno.
- In Cloud Shell, nella shell bash nginx, esegui questi comandi per installare l'editor di testo nano:
Quando ti viene richiesto se desideri continuare (Y/N), premi Y per confermare.
Devi creare un file test.html
nella directory statica fornita nel container nginx.
- In Cloud Shell, nella shell nginx bash, esegui i comandi seguenti per passare alla directory dei file statici e creare un file
test.html
:
- In Cloud Shell, nella sessione nano della shell bash nginx, digita il seguente testo:
- Premi CTRL+X, quindi premi Y e Invio per salvare il file e uscire dall'editor nano.
- In Cloud Shell, nella shell bash nginx, esegui questo comando per uscire dalla shell bash nginx:
Per connetterti e testare il container nginx modificato (con il nuovo file HTML statico), puoi creare un servizio. Un modo più semplice è utilizzare il port forwarding per connetterti al pod direttamente da Cloud Shell.
- In Cloud Shell, esegui questo comando per configurare il port forwarding da Cloud Shell al pod nginx (dalla porta 10081 della VM Cloud Shell alla porta 80 del container nginx):
L'output dovrebbe essere simile all'esempio seguente.
Output:
Si tratta di un processo in primo piano, per cui devi aprire un'altra istanza di Cloud Shell per effettuare il test.
- Nella barra dei menu di Cloud Shell, fai clic sull'icona del segno più (+) per avviare una nuova sessione di Cloud Shell.
Nella finestra di Cloud Shell viene visualizzata una seconda sessione di Cloud Shell. Puoi passare da una sessione all'altra facendo clic sui titoli nella barra dei menu.
- Nella seconda sessione di Cloud Shell, esegui questo comando per testare il container nginx modificato mediante il port forwarding:
Viene visualizzato il testo HTML che hai inserito nel file test.html
.
Visualizza i log di un pod
- Nella barra dei menu di Cloud Shell, fai clic sull'icona del segno più (+) per avviare una nuova sessione di Cloud Shell.
Nella finestra di Cloud Shell viene visualizzata una terza sessione di Cloud Shell. Come prima, puoi passare da una sessione all'altra facendo clic sulle sessioni nella barra dei menu.
- Nella terza finestra di Cloud Shell, esegui questo comando per visualizzare i log e creare un flusso di nuovi log man mano che arrivano (e includi anche i timestamp) per il nuovo pod nginx:
- I log verranno visualizzati in questa nuova finestra.
- Torna alla seconda finestra di Cloud Shell ed esegui di nuovo il comando curl per generare del traffico nel pod.
- Esamina i messaggi di log aggiuntivi visualizzati nella terza finestra di Cloud Shell.
- Chiudi la terza finestra di Cloud Shell per interrompere la visualizzazione dei messaggi di log.
- Chiudi la finestra originale di Cloud Shell per interrompere il processo di port forwarding.
Termina il lab
Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.
Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.
Il numero di stelle corrisponde alle seguenti valutazioni:
- 1 stella = molto insoddisfatto
- 2 stelle = insoddisfatto
- 3 stelle = esperienza neutra
- 4 stelle = soddisfatto
- 5 stelle = molto soddisfatto
Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.
Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.
Copyright 2020 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.