
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
Get the sample code and build a Docker image for the application
/ 20
Deploy Web Application
/ 20
Deploy Kubernetes Cluster
/ 20
Load testing master
/ 20
Load testing workers
/ 20
En este lab, aprenderás a utilizar Kubernetes Engine para implementar un framework de prueba de carga distribuida. El framework usa varios contenedores con el objetivo de crear tráfico de prueba de carga para una API simple basada en REST. A pesar de que esta solución pone a prueba una aplicación web simple, se puede usar el mismo patrón si se quieren crear situaciones de prueba de carga más complejas, como aplicaciones de Internet de las cosas (IoT) o de videojuegos. Esta solución analiza la arquitectura general de un framework de prueba de carga basado en contenedores.
Para este lab, el sistema que se somete a prueba es una pequeña aplicación web implementada en Google App Engine. La aplicación expone extremos de estilo REST básicos para capturar solicitudes POST de HTTP entrantes (los datos entrantes no se conservan).
La aplicación que implementarás se basa en el componente de servicio de backend que se encuentra en muchas implementaciones de Internet de las cosas (IoT). Los dispositivos primero se registran en el servicio y, luego, comienzan a enviar métricas o lecturas de sensores, a la vez que se vuelven a registrar regularmente en el servicio.
La interacción del componente de servicio de backend común se ve de la siguiente manera:
Para modelar esta interacción, usarás Locust
, una herramienta de prueba de carga distribuida y basada en Python que es capaz de distribuir solicitudes a través de varias rutas de destino. Por ejemplo, puede distribuir solicitudes a las rutas de destino /login
y /metrics
.
La carga de trabajo se basa en la interacción descrita anteriormente y se modela como un conjunto de tareas en Locust. Para aproximarse a los clientes del mundo real, cada tarea de Locust está ponderada. Por ejemplo, el registro se realiza una vez por cada mil solicitudes totales de clientes.
La imagen del contenedor de Locust es una imagen de Docker que contiene el software de Locust.
Un clúster de contenedor
consta de al menos una instancia principal del clúster y varias máquinas trabajadoras, llamadas nodos. Estas máquinas de instancia principal y de nodo ejecutan el sistema de organización de clústeres de Kubernetes.
Para obtener más información sobre los clústeres, consulta la Documentación de Kubernetes Engine.
Un pod
es un contenedor o varios implementados juntos en un host, y es la unidad de procesamiento más pequeña que se puede definir, implementar y administrar. Algunos Pods contienen un solo contenedor. Por ejemplo, en este lab, cada uno de los contenedores de Locust se ejecuta en su propio Pod.
Un controlador de implementación
proporciona actualizaciones declarativas de los Pods y ReplicaSets. En este lab, hay dos implementaciones: una para locust-master
y otra para locust-worker
.
Un Pod en particular puede desaparecer por varias razones, entre las que se incluye la falla en un nodo o la interrupción intencional del nodo para realizar actualizaciones o mantenimiento. Esto significa que la dirección IP de un Pod no proporciona una interfaz confiable para ese Pod. Un enfoque más confiable usaría una representación abstracta de esa interfaz que nunca cambia, incluso si el Pod subyacente desaparece y se reemplaza por un Pod nuevo con una dirección IP diferente. Un Service
de Kubernetes Engine proporciona este tipo de interfaz abstracta por medio de la definición de un conjunto lógico de Pods y una política para acceder a ellos.
En este lab, hay varios objetos Service que representan Pods o conjuntos de Pods. Por ejemplo, hay un Service para el Pod del servidor DNS, otro Service para el Pod principal de Locust y un Service que representa los 10 Pods trabajadores de Locust.
En el siguiente diagrama, se muestran los contenidos del nodo principal y de los nodos trabajadores:
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.
ID del proyecto
, región
y zona
que deseas usar para el lab.Resultado de ejemplo:
Haz clic en Revisar mi progreso para verificar el objetivo.
La carpeta sample-webapp
contiene una aplicación de Python de Google App Engine simple como “sistema a prueba”.
gcloud app deploy
:Después de ejecutar el comando, se te solicitará lo siguiente.
De la lista de regiones, puedes elegir us-central
, ingresa "10" como la entrada para el mensaje.
locust-master
y locust-worker
que ya están almacenados en la variable TARGET
.
Haz clic en Revisar mi progreso para verificar el objetivo.
gcloud
que se muestra a continuación:Resultado de ejemplo:
Haz clic en Revisar mi progreso para verificar el objetivo.
El primer componente de la implementación es la instancia principal de Locust, que constituye el punto de entrada para ejecutar las tareas de prueba de carga descritas anteriormente. La instancia principal de Locust se implementa con una única réplica porque solo necesitamos una instancia principal.
La configuración de la implementación de la instancia principal especifica varios elementos, incluidos los puertos que el contenedor debe exponer (8089
para la interfaz web, 5557
y 5558
para comunicarse con los trabajadores). Esta información se usa más adelante para configurar las instancias de trabajador de Locust.
El siguiente fragmento contiene la configuración de los puertos:
[TARGET_HOST]
y [PROJECT_ID]
en locust-master-controller.yaml
y locust-worker-controller.yaml
con el extremo y el ID del proyecto implementados, respectivamente.locust-master
, ejecuta el siguiente comando:locust-master-service
:En este paso, se expondrán el Pod con un nombre de DNS interno (locust-master
) y los puertos 8089
, 5557
y 5558
. Como parte de este paso, la directiva type: LoadBalancer
en locust-master-service.yaml
le indicará a Google Kubernetes Engine que cree una regla de reenvío de Compute Engine desde una dirección IP disponible públicamente al Pod locust-master
.
Resultado de ejemplo:
Haz clic en Revisar mi progreso para verificar el objetivo.
El siguiente componente de la implementación incluye las instancias de trabajador de Locust, que ejecutan las tareas de prueba de carga descritas anteriormente. Las instancias de trabajador de Locust se implementan mediante una única implementación que crea varios Pods. Los Pods se extienden a través del clúster de Kubernetes. Cada Pod usa variables de entorno para controlar información importante de la configuración, como el nombre de host del sistema a prueba y el nombre de host de la instancia principal de Locust.
Después de que se implementen las instancias de trabajador de Locust, puedes volver a la interfaz web de la instancia principal de Locust y comprobar que la cantidad de instancias secundarias se corresponda con la cantidad de trabajadores implementados.
El siguiente fragmento contiene la configuración de implementación del nombre, las etiquetas y la cantidad de réplicas:
locust-worker-controller
:locust-worker-controller
está configurado para implementar 5 Pods de locust-worker
. Para confirmar que se hayan implementado, ejecuta lo siguiente:Aumentar la cantidad de usuarios simulados requerirá de un aumento en la cantidad de Pods trabajadores de Locust. Para aumentar la cantidad de Pods implementados, Kubernetes ofrece la capacidad de cambiar el tamaño de las implementaciones sin volver a implementarlas.
20
:locust-worker
:En el siguiente diagrama, se muestra la relación entre la instancia principal y las instancias de trabajador de Locust:
Haz clic en Revisar mi progreso para verificar el objetivo.
La interfaz web de la instancia principal de Locust te permite ejecutar las tareas de prueba de carga en el sistema a prueba.
Para comenzar, especifica la cantidad total de usuarios que se debe simular y la velocidad a la que debe generarse cada uno.
A continuación, haz clic en Start swarming para iniciar la simulación. Por ejemplo, puedes especificar la cantidad de usuarios en 300 y la velocidad en 10.
Haz clic en Start swarming.
A medida que pasa el tiempo y se generan usuarios, se agregan estadísticas para métricas de simulación, como la cantidad de solicitudes y solicitudes por segundo.
Usaste Kubernetes Engine para implementar un framework de prueba de carga distribuida.
Este lab de autoaprendizaje forma parte de la Quest Google Cloud Solutions I: Scaling Your Infrastructure. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.
Continúa tu Quest con el siguiente lab o consulta estos labs de Google Cloud Skills Boost:
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: 12 de octubre de 2023
Prueba más reciente del lab: 12 de octubre de 2023
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