Descripción general
En este lab, configurarás PersistentVolumes y PersistentVolumeClaims. Los PersistentVolumes son almacenamiento disponible para un clúster de Kubernetes. Los PersistentVolumeClaims permiten a los Pods acceder a PersistentVolumes. Sin PersistentVolumeClaims, los Pods son mayormente efímeros, por lo que debes usar PersistentVolumeClaims para cualquier dato que deseas que sobreviva al escalamiento, la actualización o la migración del Pod.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Crear manifiestos de PersistentVolumes (PV) y PersistentVolumeClaims (PVC) para discos persistentes de Google Cloud, ya sean existentes o creados de forma dinámica
- Activar los PVC de los discos persistentes de Google Cloud como volúmenes en Pods
- Usar manifiestos para crear StatefulSets
- Activar los PVC de los discos persistentes de Google Cloud como volúmenes en StatefulSets
- Verificar la conexión de los Pods en StatefulSets con PV específicos cuando se detienen y reinician los Pods
Configuración del lab
Accede al lab
En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda.
Activa Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

-
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
- Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list
Resultado:
Credentialed accounts:
- @.com (active)
Resultado de ejemplo:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- Puedes solicitar el ID del proyecto con este comando:
gcloud config list project
Resultado:
[core]
project =
Resultado de ejemplo:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Nota:
La documentación completa de gcloud está disponible en la
guía de descripción general de gcloud CLI
.
Tarea 1: Crea PV y PVC
En esta tarea, crearás un PVC, que activará Kubernetes para que genere automáticamente un PV.
Conéctate al clúster de GKE del lab
- En Cloud Shell, escribe el siguiente comando para establecer la variable de entorno para la zona y el nombre del clúster:
export my_region={{{project_0.default_region|Region}}}
export my_cluster=autopilot-cluster-1
- Configura el completado de línea de comando para la herramienta de línea de comandos de kubectl:
source <(kubectl completion bash)
- Configura el acceso al clúster para kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region
Crea y aplica un manifiesto con un PVC
La mayor parte del tiempo, no necesitas configurar los objetos PV ni crear discos persistentes de Compute Engine de manera directa. En su lugar, puedes crear un PVC, y Kubernetes aprovisionará automáticamente un disco persistente para ti.
Creemos un PVC de 30 gigabytes llamado hello-web-disk
, que se puede activar como un volumen de lectura y escritura en un solo nodo a la vez.
- Crea y abre un archivo llamado
pvc-demo.yaml
con nano usando el siguiente comando:
nano pvc-demo.yaml
- Una vez que nano se abra, pega lo siguiente en el archivo
pvc-demo.yaml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hello-web-disk
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
-
Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.
-
Presiona Ctrl + X para salir del editor de texto nano.
-
Para mostrar que actualmente no hay ningún PVC, ejecuta el siguiente comando:
kubectl get persistentvolumeclaim
Resultado:
No resources found in default namespace.
- Para crear el PVC, ejecuta el siguiente comando:
kubectl apply -f pvc-demo.yaml
- Para mostrar el PVC que acabas de crear, ejecuta el siguiente comando:
kubectl get persistentvolumeclaim
Resultado parcial:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
hello-web-disk Pending standard-rwo unset 15s
Nota: El estado permanecerá pendiente hasta después del siguiente paso.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear PV y PVC
Tarea 2. Activa y verifica los PVC de discos persistentes de Google Cloud en los Pods
En esta tarea, conectará tu PVC de disco persistente a un Pod y activarás el PVC como un volumen que forma parte del manifiesto para el Pod.
Activa el PVC en un Pod
Crea un archivo de manifiesto pod-volume-demo.yaml
para implementar un contenedor nginx, adjunta pvc-demo-volume
al Pod y activa ese volumen en la ruta /var/www/html
dentro del contenedor nginx. Los archivos que se almacenan en este directorio dentro del contenedor se guardarán en el volumen persistente y se conservarán incluso si el Pod y el contenedor se cierran y se vuelven a crear.
- Crea y abre un archivo llamado
pod-volume-demo.yaml
con nano usando el siguiente comando:
nano pod-volume-demo.yaml
- Una vez que nano se abra, pega lo siguiente en el archivo
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
-
Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.
-
Presiona Ctrl + X para salir del editor de texto nano.
-
Para crear el Pod con el volumen, ejecuta el siguiente comando:
kubectl apply -f pod-volume-demo.yaml
- Obtén una lista de los Pods del clúster:
kubectl get pods
Resultado:
NAME READY STATUS RESTARTS AGE
pvc-demo-pod 0/1 ContainerCreating 0 18s
Si haces esto rápidamente después de crear el Pod, verás que el estado es “ContainerCreating” mientras se activa el volumen, para luego cambiar a “Running”.
- Si quieres verificar que se puede acceder al PVC dentro del Pod, debes obtener acceso de shell a tu Pod. Para iniciar la sesión de shell, ejecuta el siguiente comando:
kubectl exec -it pvc-demo-pod -- sh
- Para crear un mensaje de texto sencillo como una página web en el Pod, ingresa los siguientes comandos:
echo Test webpage in a persistent volume!>/var/www/html/index.html
chmod +x /var/www/html/index.html
- Verifica que el archivo de texto contenga tu mensaje:
cat /var/www/html/index.html
Resultado:
Test webpage in a persistent volume!
- Ingresa el siguiente comando para salir de la shell interactiva en el contenedor de nginx:
exit
Prueba la persistencia del PV
Ahora, borrarás el Pod del clúster y confirmarás que el PV todavía existe. Luego, volverás a implementar el Pod y verificarás que los contenidos del PV estén intactos.
- Borra pvc-demo-pod:
kubectl delete pod pvc-demo-pod
- Obtén una lista de los Pods del clúster:
kubectl get pods
Resultado:
No resources found in default namespace.
No debería haber ningún Pod en el clúster.
- Para mostrar tu PVC, ejecuta el siguiente comando:
kubectl get persistentvolumeclaim
Resultado parcial:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
hello-web-disk Bound pvc-8...34 30Gi RWO standard-rwo unset 22m
Tu PVC todavía existe y no desapareció cuando borraste el Pod.
- Vuelve a implementar pvc-demo-pod:
kubectl apply -f pod-volume-demo.yaml
- Obtén una lista de los Pods del clúster:
kubectl get pods
Resultado:
NAME READY STATUS RESTARTS AGE
pvc-demo-pod 1/1 Running 0 15s
El Pod se implementará y, esta vez, el estado cambiará a “Running” más rápido porque el PV ya existe y no tiene que crearse.
- Si quieres verificar que todavía se pueda acceder al PVC dentro del Pod, debes obtener acceso de shell a tu Pod. Para iniciar la sesión de shell, ejecuta el siguiente comando:
kubectl exec -it pvc-demo-pod -- sh
- Para verificar que el archivo de texto todavía contenga tu mensaje, ejecuta el siguiente comando:
cat /var/www/html/index.html
Resultado:
Test webpage in a persistent volume!
No se quitó el contenido del volumen persistente, a pesar de que el Pod se borró del clúster y se volvió a crear.
- Ingresa el siguiente comando para salir de la shell interactiva en el contenedor de nginx:
exit
Haz clic en Revisar mi progreso para verificar el objetivo.
Activa y verifica los PVC de discos persistentes de Google Cloud en los Pods
Tarea 3. Crea StatefulSets con PVC
En esta tarea, usarás tu PVC en un StatefulSet, que es como un objeto Deployment, excepto que a los Pods se les otorgan identificadores únicos.
Retira el PVC
- Antes de que puedas usar el PVC con el StatefulSet, debes borrar el Pod que lo está usando actualmente. Ejecuta el siguiente comando para borrarlo:
kubectl delete pod pvc-demo-pod
- Confirma que se haya quitado el Pod:
kubectl get pods
Resultado:
No resources found in default namespace.
Crea un StatefulSet
Creemos un archivo de manifiesto statefulset-demo.yaml
para crear un StatefulSet que incluya un servicio LoadBalancer y tres réplicas de un Pod que contenga un contenedor nginx y un VolumeClaimTemplate para PVC de 30 gigabytes con el nombre hello -web-disk
. Los contenedores nginx activan el PVC llamado hello-web-disk
en /var/www/html
, igual que en la tarea anterior.
- Crea y abre un archivo llamado
statefulset-demo.yaml
con nano usando el siguiente comando:
nano statefulset-demo.yaml
- Una vez que nano se abra, pega lo siguiente en el archivo
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
-
Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.
-
Presiona Ctrl + X para salir del editor de texto nano.
- Para crear el StatefulSet con el volumen, ejecuta el siguiente comando:
kubectl apply -f statefulset-demo.yaml
Resultado:
service "statefulset-demo-service" created
statefulset.apps "statefulset-demo" created
Ahora tienes un StatefulSet que se ejecuta detrás de un servicio llamado statefulset-demo-service
.
Verifica la conexión de los Pods en StatefulSets
- Usa “kubectl describe” para ver los detalles del StatefulSet:
kubectl describe statefulset statefulset-demo
Observa el estado del evento al final del resultado. El servicio y el StatefulSet se crearon correctamente.
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
- Obtén una lista de los Pods del clúster:
kubectl get pods
Resultado:
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
- Para mostrar los PVC, ejecuta el siguiente comando:
kubectl get pvc
Resultado:
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
El PVC hello-web-disk original todavía está ahí, y ahora puedes ver los PVC individuales que se crearon para cada Pod en el nuevo Pod de StatefulSet.
- Usa “kubectl describe” para ver los detalles del primer PVC en el StatefulSet:
kubectl describe pvc hello-web-disk-statefulset-demo-0
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear StatefulSets con PVC
Tarea 4. Verifica la persistencia de las conexiones de los volúmenes persistentes con los Pods administrados mediante StatefulSets
En esta tarea, verificarás la conexión de los Pods en StatefulSets con PV específicos cuando se detienen y reinician los Pods.
- Si quieres verificar que se pueda acceder al PVC dentro del Pod, debes obtener acceso de shell a tu Pod. Para iniciar la sesión de shell, ejecuta el siguiente comando:
kubectl exec -it statefulset-demo-0 -- sh
- Verifica que no haya un archivo de texto
index.html
en el directorio /var/www/html
:
cat /var/www/html/index.html
- Para crear un mensaje de texto sencillo como una página web en el Pod, ingresa los siguientes comandos:
echo Test webpage in a persistent volume!>/var/www/html/index.html
chmod +x /var/www/html/index.html
- Verifica que el archivo de texto contenga tu mensaje:
cat /var/www/html/index.html
Resultado:
Test webpage in a persistent volume!
- Ingresa el siguiente comando para salir de la shell interactiva en el contenedor de nginx:
exit
- Borra el Pod donde actualizaste el archivo del PVC:
kubectl delete pod statefulset-demo-0
- Obtén una lista de los Pods del clúster:
kubectl get pods
Verás que el StatefulSet reinicia automáticamente el Pod statefulset-demo-0
.
Nota: Debes esperar hasta que el estado del Pod vuelva a ser Activo.
- Conéctate a la shell del nuevo Pod
statefulset-demo-0
:
kubectl exec -it statefulset-demo-0 -- sh
- Verifica que el archivo de texto aún contenga tu mensaje:
cat /var/www/html/index.html
Resultado:
Test webpage in a persistent volume!
El StatefulSet reinicia el Pod, vuelve a conectar el PVC dedicado existente al nuevo Pod y se asegura de que se conserven los datos del Pod.
- Ingresa el siguiente comando para salir de la shell interactiva en el contenedor de nginx:
exit
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
- 1 estrella = Muy insatisfecho
- 2 estrellas = Insatisfecho
- 3 estrellas = Neutral
- 4 estrellas = Satisfecho
- 5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.