arrow_back

Cómo configurar un almacenamiento persistente para Google Kubernetes Engine

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Cómo configurar un almacenamiento persistente para Google Kubernetes Engine

Lab 1 hora universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

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.

  1. 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
  2. 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.
  3. 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.

  4. Haz clic en Siguiente.

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

  6. 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.
  7. 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. Ícono del menú de navegación

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.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

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

ID del proyecto destacado en la terminal de Cloud Shell

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

  1. 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
  1. Configura el completado de línea de comando para la herramienta de línea de comandos de kubectl:
source <(kubectl completion bash)
  1. 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.

  1. Crea y abre un archivo llamado pvc-demo.yaml con nano usando el siguiente comando:
nano pvc-demo.yaml
  1. 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
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

  2. Presiona Ctrl + X para salir del editor de texto nano.

  3. Para mostrar que actualmente no hay ningún PVC, ejecuta el siguiente comando:

kubectl get persistentvolumeclaim

Resultado:

No resources found in default namespace.
  1. Para crear el PVC, ejecuta el siguiente comando:
kubectl apply -f pvc-demo.yaml
  1. 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.

  1. Crea y abre un archivo llamado pod-volume-demo.yaml con nano usando el siguiente comando:
nano pod-volume-demo.yaml
  1. 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
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

  2. Presiona Ctrl + X para salir del editor de texto nano.

  3. Para crear el Pod con el volumen, ejecuta el siguiente comando:

kubectl apply -f pod-volume-demo.yaml
  1. 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”.

  1. 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
  1. 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
  1. Verifica que el archivo de texto contenga tu mensaje:
cat /var/www/html/index.html

Resultado:

Test webpage in a persistent volume!
  1. 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.

  1. Borra pvc-demo-pod:
kubectl delete pod pvc-demo-pod
  1. 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.

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

  1. Vuelve a implementar pvc-demo-pod:
kubectl apply -f pod-volume-demo.yaml
  1. 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.

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

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

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

  1. Crea y abre un archivo llamado statefulset-demo.yaml con nano usando el siguiente comando:
nano statefulset-demo.yaml
  1. 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
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

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

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

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

  1. 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
  1. Verifica que no haya un archivo de texto index.html en el directorio /var/www/html:
cat /var/www/html/index.html
  1. 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
  1. Verifica que el archivo de texto contenga tu mensaje:
cat /var/www/html/index.html

Resultado:

Test webpage in a persistent volume!
  1. Ingresa el siguiente comando para salir de la shell interactiva en el contenedor de nginx:
exit
  1. Borra el Pod donde actualizaste el archivo del PVC:
kubectl delete pod statefulset-demo-0
  1. 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.
  1. Conéctate a la shell del nuevo Pod statefulset-demo-0:
kubectl exec -it statefulset-demo-0 -- sh
  1. 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.

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

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.