Accedi a oltre 700 lab e corsi

Creazione di deployment Google Kubernetes Engine

Lab 1 ora universal_currency_alt 5 crediti show_chart Introduttivi
info Questo lab potrebbe incorporare strumenti di AI a supporto del tuo apprendimento.
Accedi a oltre 700 lab e corsi

Panoramica

In questo lab esplorerai le nozioni di base sull'utilizzo dei manifest di deployment. I manifest sono file contenenti le configurazioni necessarie per un deployment che possono essere utilizzati in diversi pod. I manifest sono facili da modificare.

Obiettivi

In questo lab imparerai a:

  • Creare manifest di deployment, eseguire il deployment nel cluster e verificare la ripianificazione dei pod quando i nodi sono disabilitati.
  • Attivare lo scale up e lo scale down manuale dei pod nei deployment.
  • Attivare l'implementazione (aggiornamento in sequenza a una nuova versione) e i rollback dei deployment.
  • Eseguire un deployment canary.

Configurazione del lab

Accedi al lab

Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.

  1. 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:

    • Il pulsante Apri console Google Cloud
    • Tempo rimanente
    • Credenziali temporanee da utilizzare per il lab
    • Altre informazioni per seguire questo lab, se necessario
  2. 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.

    Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account.
  3. Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.

    {{{user_0.username | "Username"}}}

    Puoi trovare il Nome utente anche nel riquadro Dettagli lab.

  4. Fai clic su Avanti.

  5. Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.

    {{{user_0.password | "Password"}}}

    Puoi trovare la Password anche nel riquadro Dettagli lab.

  6. Fai clic su Avanti.

    Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
  7. Fai clic nelle pagine successive:

    • Accetta i termini e le condizioni.
    • Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
    • Non registrarti per le prove gratuite.

Dopo qualche istante, la console Google Cloud si apre in questa scheda.

Nota: per visualizzare un menu con un elenco di prodotti e servizi Google Cloud, fai clic sul menu di navigazione in alto a sinistra oppure digita il nome del servizio o del prodotto nel campo di ricerca. Icona menu di navigazione

Una volta completati i passaggi di accesso iniziali, viene visualizzata la dashboard del progetto.

Attiva Google Cloud Shell

Google 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.

Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.

  1. Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.

    Icona Cloud Shell in evidenza

  2. Fai clic su Continua.

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:

ID progetto evidenziato nel terminale Cloud Shell

gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.

  • Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list

Output:

Credentialed accounts: - @.com (active)

Output di esempio:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puoi elencare l'ID progetto con questo comando:
gcloud config list project

Output:

[core] project =

Output di esempio:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: la documentazione completa di gcloud è disponibile nella guida Panoramica dell'interfaccia a riga di comando gcloud .

Attività 1: crea manifest di deployment ed esegui il deployment nel cluster

In quest'attività, creerai un manifest di deployment per un pod all'interno del cluster.

Connettiti al cluster GKE del lab

  1. In Cloud Shell, digita questo comando per impostare la variabile di ambiente per il nome della zona e del cluster:
export my_region={{{ project_0.default_region | REGION }}} export my_cluster=dev-cluster
  1. Configura il completamento della scheda kubectl in Cloud Shell:
source <(kubectl completion bash)
  1. In Cloud Shell, configura l'accesso al tuo cluster per lo strumento a riga di comando kubectl, utilizzando questo comando:
gcloud container clusters get-credentials $my_cluster --region $my_region

Crea un manifest di deployment

Creerai un deployment mediante il manifest di deployment di esempio denominato nginx-deployment.yaml. Questo deployment è configurato per eseguire tre repliche di pod con un singolo container nginx in ogni pod in ascolto sulla porta TCP 80.

  1. Crea e apri un file denominato nginx-deployment.yaml con nano utilizzando questo comando:
nano nginx-deployment.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file nginx-deployment.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.27.0 ports: - containerPort: 80
  1. Premi Ctrl+O e poi Invio per salvare il file modificato.

  2. Premi Ctrl+X per uscire dall'editor di testo nano.

  3. Per eseguire il deployment del manifest, esegui questo comando:

kubectl apply -f ./nginx-deployment.yaml
  1. Per visualizzare un elenco di deployment, esegui questo comando:
kubectl get deployments

L'output dovrebbe essere simile all'esempio seguente.

Output:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 0/3 3 0 3s
  1. Attendi qualche minuto e ripeti il comando finché il numero dei deployment CORRENTI riportato dal comando non corrisponde al numero di deployment DESIDERATI.

L'output finale dovrebbe essere simile all'esempio seguente.

Output:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 42s

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Crea e sottoponi a deployment il manifest del deployment nginx

Attività 2: fai lo scale up e lo scale down manuale del numero di pod nei deployment

A volte, hai la necessità di chiudere un'istanza pod. Altre volte, vuoi che siano in esecuzione dieci pod. In Kubernetes, puoi scalare un determinato pod fino al numero di istanze che preferisci. Per chiuderle, devi semplicemente scalarle fino a zero.

In questa attività, farai lo scale up e lo scale down dei pod nella console Google Cloud e in Cloud Shell.

Fai lo scale up e lo scale down dei pod nella console

  1. Passa alla scheda della console Google Cloud.
  2. Nel menu di navigazione (Icona menu di navigazione), fai clic su Kubernetes Engine > Workload.
  3. Fai clic su nginx-deployment (il tuo deployment) per aprire la pagina Dettagli deployment.
  4. In alto, fai clic su Azioni > Scala> Modifica repliche.
  5. Digita 1 e fai clic su Scala.

Viene fatto lo scale down del tuo cluster. Dovresti visualizzare lo stato di aggiornamento del pod in Pod gestiti. Potrebbe essere necessario fare clic su Aggiorna.

Fai lo scale up e lo scale down dei pod nella shell

  1. Torna alla scheda del browser di Cloud Shell.
  2. In Cloud Shell, per visualizzare un elenco dei pod nei deployment, esegui questo comando:
kubectl get deployments

Output:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 1/1 1 1 3m
  1. Per ripristinare lo scale up dei pod a tre repliche, esegui questo comando:
kubectl scale --replicas=3 deployment nginx-deployment
  1. Per visualizzare un elenco dei pod nei deployment, esegui questo comando:
kubectl get deployments

Output:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 4m

Attività 3: attiva l'implementazione e il rollback di un deployment

L'implementazione di un deployment viene attivata solo nel caso in cui il template del pod del deployment (ossia .spec.template) viene modificato, ad esempio se vengono aggiornate le etichette o le immagini container del template. Altri aggiornamenti, ad esempio lo scale up o lo scale down del deployment, non attivano l'implementazione.

In questa attività, ti occuperai di attivare l'implementazione e poi il rollback del deployment.

Attiva l'implementazione di un deployment

  1. Per aggiornare la versione di nginx nel deployment, esegui questo comando:
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.28.0

In questo modo, l'immagine container del tuo deployment viene aggiornata a nginx v1.28.0.

  1. Per annotare l'implementazione con i dettagli della modifica, esegui questo comando:
kubectl annotate deployment nginx-deployment kubernetes.io/change-cause="version change to 1.28.0" --overwrite=true
  1. Per visualizzare lo stato dell'implementazione, esegui questo comando:
kubectl rollout status deployment.v1.apps/nginx-deployment

L'output dovrebbe essere simile all'esempio seguente.

Output:

Waiting for rollout to finish: 1 out of 3 new replicas updated... Waiting for rollout to finish: 1 out of 3 new replicas updated... Waiting for rollout to finish: 1 out of 3 new replicas updated... Waiting for rollout to finish: 2 out of 3 new replicas updated... Waiting for rollout to finish: 2 out of 3 new replicas updated... Waiting for rollout to finish: 2 out of 3 new replicas updated... Waiting for rollout to finish: 1 old replicas pending termination... Waiting for rollout to finish: 1 old replicas pending termination... deployment "nginx-deployment" successfully rolled out
  1. Per verificare la modifica, recupera l'elenco dei deployment:
kubectl get deployments

L'output dovrebbe essere simile all'esempio seguente.

Output:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 6m

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Aggiorna la versione di nginx nel deployment

  1. Visualizza la cronologia dell'implementazione del deployment:
kubectl rollout history deployment nginx-deployment

L'output dovrebbe essere simile all'esempio seguente, ma potrebbe non corrispondere in modo esatto.

Output:

deployments "nginx-deployment" REVISION CHANGE-CAUSE 1 2 version change to 1.28.0

Attiva il rollback di un deployment

Per eseguire il rollback dell'implementazione di un oggetto, puoi utilizzare il comando kubectl rollout undo.

  1. Per eseguire il rollback alla versione precedente del deployment nginx, esegui questo comando:
kubectl rollout undo deployments nginx-deployment
  1. Visualizza la cronologia aggiornata dell'implementazione del deployment:
kubectl rollout history deployment nginx-deployment

L'output dovrebbe essere simile all'esempio seguente, ma potrebbe non corrispondere in modo esatto.

Output:

deployments "nginx-deployment" REVISION CHANGE-CAUSE 2 version change to 1.28.0 3 Nota: l'aggiornamento più recente non è specificato per CHANGE-CAUSE perché non abbiamo utilizzato il comando kubectl annotate.
  1. Visualizza i dettagli dell'ultima revisione del deployment:
kubectl rollout history deployment/nginx-deployment --revision=3

L'output dovrebbe essere simile all'esempio seguente. Potrebbe non corrispondere in modo esatto, ma mostrerà che è stato eseguito il rollback della revisione corrente a nginx:1.27.0.

Output:

deployments "nginx-deployment" with revision #3 Pod Template: Labels: app=nginx pod-template-hash=3123191453 Containers: nginx: Image: nginx:1.27.0 Port: 80/TCP Host Port: 0/TCP Environment: Mounts: Volumes:

Attività 4: definisci il tipo di servizio nel manifest

In questa attività, creerai e verificherai un servizio che controlla il traffico in entrata verso un'applicazione. I servizi possono essere configurati come tipi ClusterIP, NodePort o LoadBalancer. In questo lab, configurerai un servizio LoadBalancer.

Definisci i tipi di servizi nel manifest

Ti è stato fornito un file manifest denominato service-nginx.yaml che esegue il deployment di un tipo di servizio LoadBalancer. Questo servizio è configurato per distribuire il traffico in entrata dalla porta TCP 60000 alla porta 80 in tutti i container che hanno l'etichetta app: nginx.

  1. Crea e apri un file denominato service-nginx.yaml con nano utilizzando questo comando:
nano service-nginx.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file service-nginx.yaml:
apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80
  1. Premi Ctrl+O e poi Invio per salvare il file modificato.

  2. Premi Ctrl+X per uscire dall'editor di testo nano.

  3. In Cloud Shell, per eseguire il deployment del manifest, esegui questo comando:

kubectl apply -f ./service-nginx.yaml

Questo manifest definisce un servizio e lo applica ai pod che corrispondono al selettore. In questo caso, il manifest viene applicato al container nginx di cui è stato eseguito il deployment nell'attività 1. Questo servizio viene anche applicato a qualsiasi altro pod con l'etichetta app: nginx, compresi quelli creati dopo il servizio.

Verifica la creazione del servizio LoadBalancer

  1. Per visualizzare i dettagli del servizio nginx, esegui questo comando:
kubectl get service nginx

L'output dovrebbe essere simile all'esempio seguente.

Output:

NAME Type CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.X.X.X X.X.X.X 60000:31798/TCP 1m
  1. Quando compare l'IP esterno, apri http://[EXTERNAL_IP]:60000/ in una nuova scheda del browser per visualizzare il server fornito mediante il bilanciamento del carico di rete.
Nota: potrebbero volerci alcuni secondi prima che il campo ExternalIP venga completato per il tuo servizio. È normale. Esegui nuovamente il comando kubectl get services nginx a intervalli regolari di alcuni secondi fino a quando il campo non viene completato.

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Esegui il deployment del file manifest che esegue il deployment del tipo di servizio LoadBalancer

Attività 5: esegui un deployment canary

Un deployment canary è un deployment separato, utilizzato per testare una nuova versione dell'applicazione. Un singolo servizio ha come destinazione sia i deployment canary che quelli normali. E può indirizzare un sottoinsieme di utenti alla versione canary per ridurre il rischio per le nuove release.

In questa attività creerai un deployment canary per eseguire il deployment di un singolo pod che esegue una versione di nginx più nuova rispetto al tuo deployment principale.

  1. Crea e apri un file denominato nginx-canary.yaml con nano utilizzando questo comando:
nano nginx-canary.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file nginx-canary.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-canary labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx track: canary Version: 1.28.0 spec: containers: - name: nginx image: nginx:1.28.0 ports: - containerPort: 80
  1. Premi Ctrl+O e poi Invio per salvare il file modificato.

  2. Premi Ctrl+X per uscire dall'editor di testo nano.

Il manifest per il servizio nginx di cui hai eseguito il deployment nell'attività precedente utilizza un selettore etichetta per avere come destinazione i pod con l'etichetta app: nginx. Sia il deployment normale che questo nuovo deployment canary hanno l'etichetta app: nginx. Le connessioni in entrata verranno distribuite dal servizio ai pod del deployment canary e di quello normale. Il deployment canary ha meno repliche (pod) rispetto a quello normale, pertanto è disponibile per un numero inferiore di utenti rispetto a quest'ultimo.

  1. Crea il deployment canary in base al file di configurazione:
kubectl apply -f ./nginx-canary.yaml
  1. Una volta completato il deployment, verifica che i deployment nginx e nginx-canary siano presenti:
kubectl get deployments
  1. Torna alla scheda del browser collegata all'IP del servizio LoadBalancer esterno e aggiorna la pagina. Dovresti continuare a vedere la pagina Welcome to nginx standard.
  2. Torna a Cloud Shell e fai lo scale down del deployment principale a 0 repliche:
kubectl scale --replicas=0 deployment nginx-deployment
  1. Verifica che ora l'unica replica in esecuzione sia il deployment canary:
kubectl get deployments
  1. Torna alla scheda del browser collegata all'IP del servizio LoadBalancer esterno e aggiorna la pagina. Dovresti continuare a vedere la pagina Welcome to nginx standard, che indica che il servizio esegue il bilanciamento automatico del traffico verso il deployment canary.

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Crea un deployment canary

Affinità sessione

La configurazione del servizio utilizzata nel lab non garantisce che tutte le richieste provenienti da un unico client si connettano sempre allo stesso pod. Ogni richiesta viene trattata separatamente e può connettersi al deployment nginx normale o al deployment nginx-canary.

Questa possibilità di passare da una versione all'altra può causare problemi in caso di modifiche significative alle funzionalità della versione canary. Per evitare questo problema, puoi impostare il campo sessionAffinity su ClientIP nella specifica del servizio qualora sia necessaria una prima richiesta da parte del client per determinare quale pod verrà utilizzato per tutte le connessioni successive.

Ad esempio:

apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer sessionAffinity: ClientIP selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80

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.

Prima di iniziare

  1. I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
  2. I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
  3. In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare

Utilizza la navigazione privata

  1. Copia il nome utente e la password forniti per il lab
  2. Fai clic su Apri console in modalità privata

Accedi alla console

  1. Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
  2. Accetta i termini e salta la pagina di ripristino delle risorse
  3. Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso

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

Un lab alla volta

Conferma per terminare tutti i lab esistenti e iniziare questo

Utilizza la navigazione privata per eseguire il lab

Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.