
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create your cluster
/ 20
Create your pod
/ 30
Create a Kubernetes Service
/ 30
Scale up your service
/ 20
El objetivo de este lab práctico es que conviertas el código que desarrollaste en una aplicación replicada alojada en contenedores que se ejecute en Kubernetes Engine. Para este lab, el código será una simple aplicación node.js Hello World.
A continuación, encontrarás un diagrama de las diversas piezas en juego en este lab para ayudarte a comprender de qué manera encajan entre sí. Úsalo como referencia a medida que avanzas en el lab. Todo tendría que cobrar sentido cuando llegues al final (pero puedes ignorarlo por el momento).
Kubernetes es un proyecto de código abierto (disponible en kubernetes.io) que se puede ejecutar en distintos entornos, desde laptops hasta clústeres multinodos con alta disponibilidad, desde nubes públicas hasta implementaciones locales y desde máquinas virtuales hasta equipos físicos.
A los fines de este lab, utilizar un entorno administrado como Kubernetes Engine (una versión de Kubernetes alojada en Google que se ejecuta en Compute Engine) te permite concentrarte en experimentar con Kubernetes, en vez de configurar la infraestructura subyacente.
vim
, emacs
o nano
.Se incentiva a los estudiantes a que ellos mismos escriban los comandos, ya que eso los ayuda a aprender los conceptos básicos. Muchos labs incluyen un bloque de código que contiene los comandos necesarios. Durante el lab, puedes copiar y pegar fácilmente los comandos del bloque de código en los lugares apropiados.
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
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: Ordene las pestañas en ventanas separadas, una junto a la otra.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
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.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
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. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
1. Con Cloud Shell, escribe un servidor Node.js simple para implementarlo en Kubernetes Engine:
vi
, pero nano
y emacs
también están disponibles en Cloud Shell. También puedes usar la función de editor web de Cloud Shell, como se describe en la guía Cómo funciona Cloud Shell.
server.js
, presiona Esc y, luego, escribe lo siguiente:node
, ejecuta este comando para iniciar el servidor del nodo (el comando no muestra ningún resultado):8080
.Se abrirá una pestaña nueva del navegador en la que se mostrarán los resultados:
A continuación, empaquetarás esta aplicación en un contenedor de Docker.
Dockerfile
que describa la imagen que quieres crear. Las imágenes de contenedor de Docker pueden extenderse desde otras imágenes existentes, por lo que, para esta imagen, haremos una extensión desde una imagen de nodo existente:La “receta” para la imagen de Docker hará lo siguiente:
node
que se encuentra en el concentrador de Docker.8080
.server.js
en la imagen.Dockerfile
, presiona Esc y, luego, escribe lo siguiente:PROJECT_ID
por tu ID del proyecto que se encuentra en la consola y en la sección Detalles del lab:La descarga y extracción tardará un tiempo, pero puedes ver las barras de progreso a medida que se compila la imagen.
Cuando se complete, prueba la imagen de forma local. Para ello, ejecuta un contenedor de Docker como daemon en el puerto 8080 desde la imagen de contenedor que creaste recientemente.
PROJECT_ID
por tu ID del proyecto que se encuentra en la consola y en la sección Detalles del lab:El resultado debería ser similar a este:
curl
desde la ventana de Cloud Shell:Este es el resultado que deberías ver:
docker run
en la referencia de docker run.
A continuación, detén el contenedor en ejecución.
El resultado debería verse así:
[CONTAINER ID]
por el valor proporcionado en el paso anterior:El resultado de tu consola debería ser similar al siguiente (el ID de tu contenedor):
Ahora que la imagen funciona como es debido, envíala a Google Container Registry, un repositorio privado para tus imágenes de Docker accesible desde tus proyectos de Google Cloud.
Cuando se te pregunte, Do you want to continue (Y/N)?, ingresa Y.
PROJECT_ID
por tu ID del proyecto que se encuentra en la consola o en la sección Detalles del lab:El envío inicial podría tardar unos minutos en completarse. Verás las barras de progreso a medida que se completa la operación.
Ahora posees una imagen de Docker disponible para todo el proyecto, a la que Kubernetes puede acceder y que puede organizar.
gcr.io
). En tu propio entorno, puedes ser más específico acerca de la zona y el bucket que deseas utilizar. Para obtener más información, consulta .
Ahora tienes todo listo para crear tu clúster de Kubernetes Engine. Un clúster consiste en un servidor de API de la instancia principal de Kubernetes alojado por Google y en un conjunto de nodos trabajadores. Los nodos trabajadores son máquinas virtuales de Compute Engine.
gcloud
(reemplaza PROJECT_ID
por el ID de tu proyecto, que se encuentra en la consola y en la sección Detalles del lab):Puedes ignorar de forma segura las advertencias que aparecen cuando se compila el clúster.
El resultado de la consola debería ser similar al siguiente:
Como alternativa, puedes crear este clúster a través de la consola. Para ello, abre el menú de navegación y selecciona Kubernetes Engine > Clústeres de Kubernetes > Crear.
Si seleccionas el menú de navegación > Kubernetes Engine, verás que ahora tienes un clúster de Kubernetes completamente funcional con la tecnología de Kubernetes Engine:
Es hora de implementar tu propia aplicación alojada en contenedores en el clúster de Kubernetes. A partir de ahora, usa la línea de comandos kubectl
(que ya está configurada en tu entorno de Cloud Shell).
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Un pod de Kubernetes es un grupo de contenedores unidos para funciones administrativas y de herramientas de redes. Puede tener uno o muchos contenedores. Aquí, deberás usar un contenedor compilado con tu imagen de Node.js almacenada en tu Container Registry privado. Entregará contenido en el puerto 8080.
kubectl run
(reemplaza PROJECT_ID
por el ID de tu proyecto, que se encuentra en la consola y en la sección Detalles de la conexión del lab):Resultado:
Como puedes ver, creaste un objeto Deployment. Las implementaciones son la forma recomendada para crear y escalar pods. Aquí, una nueva implementación administra una única réplica de pod que ejecuta la imagen hello-node:v1
.
Resultado:
Resultado:
Ahora es un buen momento para revisar algunos comandos kubectl
interesantes. Ninguna de estas opciones cambiará el estado del clúster. Para ver la documentación de referencia completa, consulta Herramienta de línea de comandos (kubectl):
Y para la solución de problemas:
Ahora debes hacer que tu Pod sea accesible públicamente.
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Según la configuración predeterminada, el Pod únicamente es accesible a través de su IP interna dentro del clúster. Para hacer accesible el contenedor hello-node
desde afuera de la red virtual de Kubernetes, tienes que exponer el Pod como un servicio de Kubernetes.
kubectl expose
y la marca --type="LoadBalancer"
. Esta marca es necesaria para la creación de una IP accesible de forma externa:Resultado:
La marca utilizada en este comando especifica que se usa el balanceador de cargas proporcionado por la infraestructura subyacente (en este caso, el balanceador de cargas de Compute Engine). Ten en cuenta que se expone directamente la implementación, no el Pod. Esto hará que el servicio resultante balancee la carga de tráfico en todos los Pods administrados por la implementación (en este caso, solo 1 Pod, pero luego podrás agregar más réplicas).
La instancia principal de Kubernetes crea el balanceador de cargas y las reglas de reenvío de Compute Engine relacionadas, los grupos de destino y las reglas de firewall para que el servicio se vuelva completamente accesible desde el exterior de Google Cloud.
kubectl
muestre todos los servicios del clúster:Este es el resultado que deberías ver:
Se mencionan 2 direcciones IP para tu servicio hello-node, y ambas entregan contenido al puerto 8080. CLUSTER-IP
corresponde a la IP interna que solo es visible dentro de tu red virtual de Cloud, mientras que EXTERNAL-IP
corresponde a la IP externa de balanceo de cargas.
EXTERNAL-IP
podría tardar varios minutos en estar disponible y visible. Si falta la EXTERNAL-IP
, espera unos minutos y vuelve a ejecutar el comando.
http://<EXTERNAL_IP>:8080
En este punto, pasarse a los contenedores y a Kubernetes ya te brindó varios beneficios: no necesitas especificar en qué host ejecutar tu carga de trabajo y también te beneficias de la supervisión y el reinicio del servicio. Ahora, descubre qué más puedes obtener de tu nueva infraestructura de Kubernetes.
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
Una de las características avanzadas que ofrece Kubernetes es la gran facilidad para escalar tu aplicación. Supongamos que, de repente, necesitas más capacidad. Puedes indicarle al controlador de replicación que administre una nueva cantidad de réplicas para tu Pod:
Resultado:
Resultado:
Vuelve a ejecutar el comando anterior hasta que veas que se crearon las 4 réplicas.
Este es el resultado que deberías ver:
Aquí se usa un enfoque declarativo. En vez de iniciar o detener nuevas instancias, debes declarar cuántas instancias deberían estar en ejecución constantemente. Los bucles de conciliación de Kubernetes garantizan que la realidad coincida con lo que solicitaste y, de ser necesario, ejecutan acciones.
Aquí tienes un diagrama que resume el estado de tu clúster de Kubernetes:
Haz clic en Revisar mi progreso a continuación para revisar tu progreso en el lab.
En algún momento, la aplicación que implementaste en producción requerirá la corrección de errores o funciones adicionales. Kubernetes te ayuda a implementar una nueva versión en la producción sin afectar a tus usuarios.
server.js
para modificar la aplicación:server.js
, presiona Esc y, luego, escribe lo siguiente:Ahora puedes compilar y publicar una nueva imagen de contenedor en el registro con una etiqueta incrementada (en este caso, v2
):
PROJECT_ID
por el ID del proyecto de tu lab:Kubernetes actualizará sin problemas tu controlador de replicación a la nueva versión de la aplicación. Para cambiar la etiqueta de la imagen de tu contenedor en ejecución, deberás editar hello-node deployment
y cambiar la imagen de gcr.io/PROJECT_ID/hello-node:v1
a gcr.io/PROJECT_ID/hello-node:v2
.
kubectl edit
:Con esto se abre un editor de texto que muestra la configuración yaml completa de la implementación. No es necesario entender toda la configuración yaml por ahora, solo basta con comprender que cuando se actualiza el campo spec.template.spec.containers.image
de la configuración, le indicas a la implementación que actualice los Pods con la nueva imagen.
Spec
> containers
> image
y cambia el número de versión de v1 a v2:Este es el resultado que deberías ver:
Se crearán nuevos Pods con la nueva imagen, y los Pods anteriores se borrarán.
Este es el resultado que deberías ver (es posible que debas volver a ejecutar el comando anterior para ver lo siguiente):
Mientras esto se aplica, los usuarios de tus servicios no deberían sufrir ninguna interrupción. Luego de un rato, comenzarán a acceder a la nueva versión de tu aplicación. Puedes encontrar más detalles sobre las actualizaciones progresivas en la documentación para realizar una actualización progresiva.
Esperamos que con estas funciones de implementación, escalamiento y actualización, una vez que hayas configurado tu clúster de Kubernetes Engine, estés de acuerdo en que Kubernetes te ayudará a enfocarte más en la aplicación que en la infraestructura.
Para poner a prueba sus conocimientos sobre Google Cloud Platform, realice nuestro cuestionario (seleccione varias opciones correctas).
De esta manera, finaliza este lab práctico con Kubernetes. Solo vimos una mínima parte de esta tecnología. Por eso, te invitamos a explorar con tus propios Pods, controladores de replicación y servicios, y también consultar los sondeos de funcionamiento (verificaciones de estado) y considera usar directamente la API de Kubernetes.
Intenta administrar implementaciones con Kubernetes Engine o consulta las siguientes sugerencias:
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 14 de marzo de 2024
Prueba más reciente del lab: 14 de marzo de 2024
Copyright 2025 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.
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
One lab at a time
Confirm to end all existing labs and start this one