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

Cómo crear implementaciones de 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, explorarás los conceptos básicos del uso de manifiestos de implementación. Los manifiestos son archivos que contienen las configuraciones necesarias para una implementación que puede usarse en diferentes Pods. Los manifiestos son fáciles de cambiar.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Crear manifiestos de implementación, realizar implementaciones en el clúster y verificar la reprogramación de Pods cuando se inhabilitan los nodos
  • Activar el aumento y la reducción manual del escalamiento vertical de Pods en las implementaciones
  • Activar el lanzamiento (actualización progresiva a la versión nueva) y las reversiones de la implementación
  • Realizar una implementación de versiones canary

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

Después de completar los pasos iniciales de acceso, aparecerá el panel del proyecto.

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 manifiestos de implementación y realiza implementaciones en el clúster

En esta tarea, crearás un manifiesto de implementación para un Pod dentro del clúster.

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=dev-cluster
  1. Configura el completado de línea de comando de kubectl en Cloud Shell:
source <(kubectl completion bash)
  1. En Cloud Shell, configura el acceso a tu clúster para la herramienta de línea de comandos de kubectl con el siguiente comando:
gcloud container clusters get-credentials $my_cluster --region $my_region

Crea un manifiesto de implementación

Crearás una implementación con un manifiesto de implementación de muestra denominado nginx-deployment.yaml. Esta implementación está configurada para ejecutar tres réplicas de Pod con un solo contenedor nginx en cada Pod que escucha en el puerto TCP 80.

  1. Crea y abre un archivo llamado nginx-deployment.yaml con nano usando el siguiente comando:
nano nginx-deployment.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo 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. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

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

  3. Para implementar tu manifiesto, ejecuta el siguiente comando:

kubectl apply -f ./nginx-deployment.yaml
  1. Para ver una lista de implementaciones, ejecuta el siguiente comando:
kubectl get deployments

El resultado debería verse como este ejemplo.

Resultado:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 0/3 3 0 3s
  1. Espera unos minutos y repite el comando hasta que la cantidad de implementaciones en CURRENT informada por el comando coincida con la cantidad de implementaciones indicada en DESIRED.

El resultado final debe verse como el ejemplo.

Resultado:

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

Haz clic en Revisar mi progreso para verificar el objetivo. Crear e implementar el manifiesto nginx-deployment

Tarea 2: Aumenta y reduce manualmente la escala de la cantidad de Pods en las implementaciones

A veces, deseas cerrar una instancia de Pod. Otras veces, quieres contar con diez Pods en ejecución. En Kubernetes, puedes escalar un Pod específico para alcanzar la cantidad de instancias deseada. Para cerrarlos, reduce la escala a cero.

En esta tarea, aumentarás y reducirás la escala de los Pods verticalmente en la consola de Google Cloud y Cloud Shell.

Aumenta y reduce la escala de los Pods verticalmente en la consola

  1. Cambia a la pestaña de la consola de Google Cloud.
  2. En el menú de navegación (Ícono del menú de navegación), haz clic en Kubernetes Engine > Cargas de trabajo.
  3. Haz clic en nginx-deployment (tu implementación) para abrir la página Detalles de la implementación.
  4. En la parte superior, haz clic en Acciones > Escalar > Editar réplicas.
  5. Escribe 1 y haz clic en Escalar.

Esta acción reduce tu clúster. Deberías ver el estado del Pod que se actualiza en Pods administrados. Es posible que tengas que hacer clic en Actualizar.

Aumenta y reduce la escala de los Pods en la shell

  1. Regresa a la pestaña del navegador de Cloud Shell.
  2. En Cloud Shell, ejecuta el siguiente comando para ver una lista de Pods en las implementaciones:
kubectl get deployments

Resultado:

NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 1/1 1 1 3m
  1. Para escalar el Pod hasta tres réplicas, ejecuta el siguiente comando:
kubectl scale --replicas=3 deployment nginx-deployment
  1. Para ver una lista de Pods en las implementaciones, ejecuta el siguiente comando:
kubectl get deployments

Resultado:

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

Tarea 3: Activa un lanzamiento y una reversión de la implementación

El lanzamiento de una implementación se activa solo si se modifica la plantilla del Pod de la implementación (es decir, .spec.template), por ejemplo, si se actualizan las etiquetas o las imágenes de contenedor de la plantilla. Otras actualizaciones, como escalar la implementación, no activan un lanzamiento.

En esta tarea, activarás el lanzamiento de la implementación y, a continuación, activarás tu reversión.

Activa el lanzamiento de una implementación

  1. Para actualizar la versión de nginx en la implementación, ejecuta el siguiente comando:
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.28.0

Esto actualiza la imagen de contenedor en tu implementación a nginx v1.28.0.

  1. Ejecuta el siguiente comando para anotar el lanzamiento con detalles sobre el cambio:
kubectl annotate deployment nginx-deployment kubernetes.io/change-cause="version change to 1.28.0" --overwrite=true
  1. Para ver el estado del lanzamiento, ejecuta el siguiente comando:
kubectl rollout status deployment.v1.apps/nginx-deployment

El resultado debería verse como el ejemplo.

Resultado:

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. Para verificar el cambio, obtén la lista de implementaciones:
kubectl get deployments

El resultado debería verse como el ejemplo.

Resultado:

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

Haz clic en Revisar mi progreso para verificar el objetivo. Actualizar la versión de nginx en la implementación

  1. Consulta el historial de lanzamientos de la implementación.
kubectl rollout history deployment nginx-deployment

El resultado debería verse como el ejemplo. Es posible que tu resultado no sea exactamente igual.

Resultado:

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

Activa una reversión de la implementación

Para revertir el lanzamiento de un objeto, puedes usar el comando kubectl rollout undo.

  1. Para revertir a la versión anterior de la implementación de nginx, ejecuta el siguiente comando:
kubectl rollout undo deployments nginx-deployment
  1. Mira el historial de lanzamientos actualizado de la implementación:
kubectl rollout history deployment nginx-deployment

El resultado debería verse como el ejemplo. Es posible que tu resultado no sea exactamente igual.

Resultado:

deployments "nginx-deployment" REVISION CHANGE-CAUSE 2 version change to 1.28.0 3 Nota: La actualización más reciente está en blanco para CHANGE-CAUSE, ya que no usamos el comando kubectl annotate.
  1. Mira los detalles de la última revisión de la implementación:
kubectl rollout history deployment/nginx-deployment --revision=3

El resultado debería verse como el ejemplo. Es posible que tu resultado no sea exactamente igual, pero mostrará que la revisión actual se revirtió a nginx:1.27.0.

Resultado:

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:

Tarea 4: Define el tipo de servicio en el manifiesto

En esta tarea, crearás y verificarás un servicio que controla el tráfico entrante a una aplicación. Los servicios se pueden configurar como ClusterIP, NodePort o LoadBalancer. En este lab, configurarás un LoadBalancer.

Define los tipos de servicio en el manifiesto

Se te proporcionó un archivo de manifiesto llamado service-nginx.yaml que implementa un tipo de servicio LoadBalancer. Este servicio está configurado para distribuir el tráfico entrante en el puerto TCP 60000 al puerto 80 en cualquier contenedor que tenga la etiqueta app: nginx.

  1. Crea y abre un archivo llamado service-nginx.yaml con nano usando el siguiente comando:
nano service-nginx.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo service-nginx.yaml:
apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80
  1. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

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

  3. En Cloud Shell, ejecuta el siguiente comando para implementar tu manifiesto:

kubectl apply -f ./service-nginx.yaml

Este manifiesto define un servicio y lo aplica a Pods que corresponden al selector. En este caso, el manifiesto se aplica al contenedor nginx que implementaste en la tarea 1. Este servicio también se aplica a cualquier otro Pod con la etiqueta app: nginx, incluidos los que se crean después del servicio.

Verifica la creación de LoadBalancer

  1. Para ver los detalles del servicio de nginx, ejecuta el siguiente comando:
kubectl get service nginx

El resultado debería verse como el ejemplo.

Resultado:

NAME Type CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.X.X.X X.X.X.X 60000:31798/TCP 1m
  1. Cuando aparezca la IP externa, abre http://[EXTERNAL_IP]:60000/ en una pestaña del navegador nueva para ver cómo el servidor recibe contenido a través del balanceo de cargas de red.
Nota: Es posible que los datos del campo ExternalIP de tu servicio demoren algunos segundos en propagarse. Esto es normal. Simplemente vuelve a ejecutar el comando kubectl get services nginx cada algunos segundos hasta que los datos del campo se propaguen.

Haz clic en Revisar mi progreso para verificar el objetivo. Implementar el archivo de manifiesto que implementa el tipo de servicio LoadBalancer

Tarea 5: Realiza una implementación de versiones canary

Una implementación de versiones canary es una implementación separada que se utiliza para probar una nueva versión de tu aplicación. Un solo servicio apunta a las implementaciones de versiones canary y a las normales. Además, puede dirigir un subconjunto de usuarios a la versión canary para mitigar el riesgo de nuevos lanzamientos.

En esta tarea, crearás una implementación de versiones canary para implementar un solo pod que ejecuta una versión más reciente de nginx que tu implementación principal.

  1. Crea y abre un archivo llamado nginx-canary.yaml con nano usando el siguiente comando:
nano nginx-canary.yaml
  1. Una vez que nano se abra, pega lo siguiente en el archivo 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. Presiona Ctrl + O y, luego, Intro para guardar el archivo editado.

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

El manifiesto para el servicio de nginx que implementaste en la tarea anterior utiliza un selector de etiquetas para apuntar a los Pods con la etiqueta app: nginx. Tanto la implementación normal como esta nueva implementación de versiones canary tienen la etiqueta app: nginx. El servicio distribuirá las conexiones entrantes a los Pods de implementación normal y de versiones canary. La implementación de versiones canary tiene menos réplicas (Pods) que la implementación normal y, por lo tanto, está disponible para menos usuarios que esta última.

  1. Crea la implementación de versiones canary basada en el archivo de configuración:
kubectl apply -f ./nginx-canary.yaml
  1. Cuando se complete la implementación, verifica que estén presentes las implementaciones nginx y nginx-canary:
kubectl get deployments
  1. Regresa a la pestaña del navegador que está conectada a la IP externa del servicio LoadBalancer y actualiza la página. Deberías seguir viendo la página estándar Welcome to nginx.
  2. Regresa a Cloud Shell y reduce verticalmente la escala de la implementación principal a 0 réplicas:
kubectl scale --replicas=0 deployment nginx-deployment
  1. Verifica que la única réplica en ejecución sea ahora la implementación de versiones canary:
kubectl get deployments
  1. Regresa a la pestaña del navegador que está conectada a la IP externa del servicio LoadBalancer y actualiza la página. Deberías seguir viendo la página estándar Welcome to nginx, que muestra que el servicio está balanceando automáticamente el tráfico a la implementación de versiones canary.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear una implementación de versiones canary

Afinidad de sesión

La configuración del servicio utilizada en el lab no garantiza que todas las solicitudes de un solo cliente siempre se conectarán al mismo Pod. Cada solicitud se trata por separado y se puede conectar a la implementación nginx normal o a la implementación nginx-canary.

Esta posibilidad de hacer cambios entre diferentes versiones puede causar problemas si hay modificaciones significativas en la funcionalidad del lanzamiento Canary. Para evitar esto, puedes establecer el campo sessionAffinity como ClientIP en la especificación del servicio si necesitas la primera solicitud de un cliente para determinar qué Pod se utilizará para todas las conexiones posteriores.

Por ejemplo:

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

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.