arrow_back

Configurazione dell'archiviazione permanente per Google Kubernetes Engine

Accedi Partecipa
Accedi a oltre 700 lab e corsi

Configurazione dell'archiviazione permanente per 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 configurerai volumi permanenti e richieste di volumi permanenti. Gli oggetti PersistentVolume sono spazi di archiviazione disponibili per un cluster Kubernetes. Gli oggetti PersistentVolumeClaim sono richieste di volumi permanenti che consentono ai pod di accedere agli oggetti PersistentVolume. In assenza di richieste di volumi permanenti i pod sono per lo più temporanei, quindi devi utilizzare richieste di volumi permanenti per tutti i dati che prevedi sopravviveranno alla scalabilità, all'aggiornamento o alla migrazione dei pod.

Obiettivi

In questo lab imparerai a:

  • Creare file manifest per i volumi permanenti (PV, PersistentVolume) e le richieste di volumi permanenti (PVC, PersistentVolumeClaim) per i dischi permanenti di Google Cloud (creati dinamicamente o esistenti)
  • Montare le PVC di dischi permanenti di Google Cloud come volumi nei pod
  • Utilizzare i file manifest per creare oggetti StatefulSet
  • Montare le PVC di dischi permanenti di Google Cloud come volumi negli oggetti StatefulSet
  • Verificare la connessione dei pod negli oggetti StatefulSet a determinati PV quando i pod vengono arrestati e riavviati

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

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 oggetti PV e PVC

In questa attività creerai una PVC per consentire a Kubernetes di creare automaticamente un PV.

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=autopilot-cluster-1
  1. Configura il completamento per lo strumento a riga di comando kubectl.
source <(kubectl completion bash)
  1. Configura l'accesso al tuo cluster per kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region

Crea e applica un manifest con una PVC

Nella maggior parte dei casi non è necessario configurare direttamente oggetti PV o creare dischi permanenti di Compute Engine. È invece possibile creare una PVC e Kubernetes eseguirà automaticamente il provisioning di un disco permanente.

Crea una PVC di 30 gigabyte denominata hello-web-disk che può essere montata come volume di lettura-scrittura su un singolo nodo alla volta.

  1. Crea e apri un file denominato pvc-demo.yaml con nano utilizzando questo comando:
nano pvc-demo.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file pvc-demo.yaml:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: hello-web-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi
  1. Premi Ctrl+O e poi Invio per salvare il file modificato.

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

  3. Se vuoi verificare di non avere PVC al momento, esegui questo comando:

kubectl get persistentvolumeclaim

Output:

No resources found in default namespace.
  1. Per creare la PVC, esegui questo comando:
kubectl apply -f pvc-demo.yaml
  1. Per visualizzare la PVC appena creata, esegui questo comando:
kubectl get persistentvolumeclaim

Output parziale:

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE hello-web-disk Pending standard-rwo unset 15s Nota: lo stato rimarrà in attesa fino al completamento del passaggio successivo.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Crea oggetti PV e PVC

Attività 2: monta e verifica le PVC di dischi permanenti di Google Cloud nei pod

In questa attività dovrai collegare la PVC del disco permanente a un pod. Puoi montare la PVC come volume come parte del file manifest per il pod.

Monta la PVC su un pod

Crea un file manifest pod-volume-demo.yaml per eseguire il deployment di un container nginx, collega pvc-demo-volume al pod e monta il volume nel percorso /var/www/html all'interno del container nginx. I file salvati in questa directory all'interno del container verranno salvati nel volume permanente e conservati anche se il pod e il container vengono arrestati e ricreati.

  1. Crea e apri un file denominato pod-volume-demo.yaml con nano utilizzando questo comando:
nano pod-volume-demo.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file pod-volume-demo.yaml:
kind: Pod apiVersion: v1 metadata: name: pvc-demo-pod spec: containers: - name: frontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: pvc-demo-volume volumes: - name: pvc-demo-volume persistentVolumeClaim: claimName: hello-web-disk
  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 creare il pod con il volume, esegui questo comando:

kubectl apply -f pod-volume-demo.yaml
  1. Elenca i pod presenti nel cluster:
kubectl get pods

Output:

NAME READY STATUS RESTARTS AGE pvc-demo-pod 0/1 ContainerCreating 0 18s

Se esegui questa operazione rapidamente dopo aver creato il pod, verrà visualizzato lo stato "ContainerCreating" mentre il volume viene montato prima che lo stato diventi "Running".

  1. Per verificare che la PVC sia accessibile all'interno del pod, devi poter accedere a quest'ultimo tramite la shell. Per avviare la sessione della shell, esegui questo comando:
kubectl exec -it pvc-demo-pod -- sh
  1. Per creare un semplice messaggio di testo come pagina web nel pod, inserisci questi comandi:
echo Test webpage in a persistent volume!>/var/www/html/index.html chmod +x /var/www/html/index.html
  1. Verifica che il file di testo contenga il messaggio:
cat /var/www/html/index.html

Output:

Test webpage in a persistent volume!
  1. Inserisci il comando seguente per uscire dalla shell interattiva del container nginx:
exit

Verifica che volume sia effettivamente permanente

Ora puoi eliminare il pod dal cluster, confermare che il PV esista ancora, quindi rieseguire il deployment del pod e verificare che i contenuti del PV siano rimasti invariati.

  1. Elimina l'oggetto pvc-demo-pod:
kubectl delete pod pvc-demo-pod
  1. Elenca i pod presenti nel cluster:
kubectl get pods

Output:

No resources found in default namespace.

There should be no Pods on the cluster.

  1. Per visualizzare la PVC, esegui il comando seguente:
kubectl get persistentvolumeclaim

Output parziale:

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE hello-web-disk Bound pvc-8...34 30Gi RWO standard-rwo unset 22m

La PVC esiste ancora e non è stata eliminata quando è stato eliminato il pod.

  1. Esegui di nuovo il deployment di pvc-demo-pod:
kubectl apply -f pod-volume-demo.yaml
  1. Elenca i pod presenti nel cluster:
kubectl get pods

Output:

NAME READY STATUS RESTARTS AGE pvc-demo-pod 1/1 Running 0 15s

Verrà eseguito il deployment del pod e il suo stato questa volta cambierà in "Running" più rapidamente perché l'oggetto PV esiste già e non è necessario crearlo.

  1. Per verificare che la PVC sia ancora accessibile all'interno del pod, devi poter accedere a quest'ultimo tramite la shell. Per avviare la sessione della shell, esegui questo comando:
kubectl exec -it pvc-demo-pod -- sh
  1. Per verificare che il file di testo contenga ancora il tuo messaggio, esegui questo comando:
cat /var/www/html/index.html

Output:

Test webpage in a persistent volume!

I contenuti del volume permanente non sono stati rimossi, anche se il pod è stato eliminato dal cluster e poi ricreato.

  1. Inserisci il comando seguente per uscire dalla shell interattiva del container nginx:
exit

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Monta e verifica le PVC di dischi permanenti di Google Cloud nei pod

Attività 3: crea oggetti StatefulSet con PVC

In questa attività utilizzerai la tua PVC in un oggetto StatefulSet. Uno StatefulSet è simile a un deployment, tranne per il fatto che ai pod vengono assegnati identificatori univoci.

Rilascia la PVC

  1. Per poter utilizzare la PVC con lo StatefulSet, devi prima eliminare il pod che la sta utilizzando. Esegui questo comando per eliminare il pod:
kubectl delete pod pvc-demo-pod
  1. Conferma che il pod è stato rimosso:
kubectl get pods

Output:

No resources found in default namespace.

Crea un oggetto StatefulSet

Crea un file manifest statefulset-demo.yaml che crea uno StatefulSet nel quale sono inclusi un servizio LoadBalancer e tre repliche di un pod contenente un container nginx e un oggetto volumeClaimTemplate per PVC di 30 gigabyte con il nome hello -web-disk. I container nginx montano la PVC denominata hello-web-disk all'indirizzo /var/www/html, come nell'attività precedente.

  1. Crea e apri un file denominato statefulset-demo.yaml con nano utilizzando questo comando:
nano statefulset-demo.yaml
  1. Una volta aperto nano, incolla il seguente codice nel file statefulset-demo.yaml:
kind: Service apiVersion: v1 metadata: name: statefulset-demo-service spec: ports: - protocol: TCP port: 80 targetPort: 9376 type: LoadBalancer --- apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-demo spec: selector: matchLabels: app: MyApp serviceName: statefulset-demo-service replicas: 3 updateStrategy: type: RollingUpdate template: metadata: labels: app: MyApp spec: containers: - name: stateful-set-container image: nginx ports: - containerPort: 80 name: http volumeMounts: - name: hello-web-disk mountPath: "/var/www/html" volumeClaimTemplates: - metadata: name: hello-web-disk spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 30Gi
  1. Premi Ctrl+O e poi Invio per salvare il file modificato.

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

  • Per creare lo StatefulSet con il volume, esegui questo comando:
kubectl apply -f statefulset-demo.yaml

Output:

service "statefulset-demo-service" created statefulset.apps "statefulset-demo" created

Ora hai un oggetto StatefulSet in esecuzione dietro un servizio denominato statefulset-demo-service.

Verifica la connessione dei pod negli oggetti StatefulSet

  1. Utilizza "kubectl describe" per visualizzare i dettagli degli StatefulSet:
kubectl describe statefulset statefulset-demo

Osserva lo stato dell'evento alla fine dell'output. Il servizio e l'oggetto StatefulSet sono stati creati correttamente.

Normal SuccessfulCreate 10s statefulset-controller Message: create Claim hello-web-disk-statefulset-demo-0 Pod statefulset-demo-0 in StatefulSet statefulset-demo success Normal SuccessfulCreate 10s statefulset-controller Message: create Pod statefulset-demo-0 in StatefulSet statefulset-demo successful
  1. Elenca i pod presenti nel cluster:
kubectl get pods

Output:

NAME READY STATUS RESTARTS AGE statefulset-demo-0 1/1 Running 0 6m statefulset-demo-1 1/1 Running 0 3m statefulset-demo-2 1/1 Running 0 2m
  1. Per elencare le PVC, esegui il comando seguente:
kubectl get pvc

Output:

NAME STATUS VOLUME CAPACITY ACCESS hello-web-disk Bound pvc-86117ea6-...34 30Gi RWO hello-web-disk-st...-demo-0 Bound pvc-92d21d0f-...34 30Gi RWO hello-web-disk-st...-demo-1 Bound pvc-9bc84d92-...34 30Gi RWO hello-web-disk-st...-demo-2 Bound pvc-a526ecdf-...34 30Gi RWO

Il volume hello-web-disk è ancora presente e puoi vedere le singole PVC create per ciascun pod nel nuovo pod dello StatefulSet.

  1. Utilizza "kubectl describe" per visualizzare i dettagli della prima PVC nello StatefulSet:
kubectl describe pvc hello-web-disk-statefulset-demo-0

Fai clic su Controlla i miei progressi per verificare l'obiettivo. Crea oggetti StatefulSet con le PVC

Attività 4: verifica la persistenza delle connessioni dei volumi permanenti ai pod gestiti da oggetti StatefulSet

In questa attività verificherai la connessione dei pod negli oggetti StatefulSet a determinati PV quando i pod vengono arrestati e riavviati.

  1. Per verificare che la PVC sia accessibile all'interno del pod, devi poter accedere a quest'ultimo tramite la shell. Per avviare la sessione della shell, esegui questo comando:
kubectl exec -it statefulset-demo-0 -- sh
  1. Verifica che non esista un file di testo index.html nella directory /var/www/html:
cat /var/www/html/index.html
  1. Per creare un semplice messaggio di testo come pagina web nel pod, inserisci questi comandi:
echo Test webpage in a persistent volume!>/var/www/html/index.html chmod +x /var/www/html/index.html
  1. Verifica che il file di testo contenga il messaggio:
cat /var/www/html/index.html

Output:

Test webpage in a persistent volume!
  1. Inserisci il comando seguente per uscire dalla shell interattiva del container nginx:
exit
  1. Elimina il pod in cui hai aggiornato il file sulla PVC:
kubectl delete pod statefulset-demo-0
  1. Elenca i pod presenti nel cluster:
kubectl get pods

Vedrai che lo StatefulSet riavvia automaticamente il pod statefulset-demo-0.

Nota: devi attendere finché lo stato indica che il pod è nuovamente in esecuzione.
  1. Collegati alla shell del nuovo pod statefulset-demo-0:
kubectl exec -it statefulset-demo-0 -- sh
  1. Verifica che il file di testo contenga ancora il messaggio:
cat /var/www/html/index.html

Output:

Test webpage in a persistent volume!

Lo StatefulSet riavvia il pod e riconnette la PVC dedicata esistente al nuovo pod, garantendo che i dati associati a quel pod vengano conservati.

  1. Inserisci il comando seguente per uscire dalla shell interattiva del container nginx:
exit

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.