Puntos de control
Create a new Cluster
/ 25
Create the StorageClass
/ 25
Deploying the Headless Service and StatefulSet
/ 25
Scaling the MongoDB replica set
/ 25
Ejecuta una base de datos de MongoDB en Kubernetes con StatefulSets
- GSP022
- Descripción general
- Configuración
- Tarea 1. Establece una zona de procesamiento
- Tarea 2. Crea un clúster nuevo
- Tarea 3. Establece la configuración
- Tarea 4. Implementa Headless Service y StatefulSet
- Tarea 5. Conéctate al conjunto de réplicas de MongoDB
- Tarea 6. Escala el conjunto de réplicas de MongoDB
- Tarea 7. Usa el conjunto de réplicas de MongoDB
- Tarea 8. Realiza una limpieza
- ¡Felicitaciones!
Este lab se desarrolló junto con nuestro socio MongoDB. Es posible que tu información personal se comparta con MongoDB, el patrocinador del lab, si aceptaste recibir actualizaciones, anuncios y ofertas de productos en el perfil de tu cuenta.
GSP022
Descripción general
Kubernetes es una herramienta de organización de contenedores de código abierto que simplifica la ejecución de aplicaciones alojadas en contenedores. Puedes ejecutar aplicaciones de Kubernetes con Kubernetes Engine
, un servicio de procesamiento de Google Cloud que ofrece diferentes integraciones y personalizaciones. En este lab, obtendrás algo de experiencia práctica con Kubernetes. Para ello, aprenderás a configurar una base de datos de MongoDB con un StatefulSet. Ejecutar una aplicación con estado (una base de datos) en un servicio sin estado (contenedor) puede sonar contradictorio. Sin embargo, después de practicar con este lab, verás rápidamente que no es el caso. De hecho, si usas algunas herramientas de código abierto, verás cómo Kubernetes y los servicios sin estado se complementan perfectamente.
Qué aprenderás
En este lab, aprenderás lo siguiente:
- Cómo implementar un clúster de Kubernetes, un Headless Service y un StatefulSet
- Cómo conectar un clúster de Kubernetes a un conjunto de réplicas de MongoDB
- Cómo aumentar y reducir las instancias de un conjunto de réplicas de MongoDB
- Cómo limpiar tu entorno y cerrar los servicios anteriores
Requisitos previos
Este es un lab de nivel avanzado. Se sugiere tener conocimiento de Kubernetes o aplicaciones en contenedores. Además, se recomienda tener experiencia con Google Cloud Shell/SDK y MongoDB. Si deseas avanzar con estos servicios, realiza los siguientes labs:
- Kubernetes Engine: Qwik Start
- Cómo administrar implementaciones con Kubernetes Engine
- Datastore: Qwik Start
Cuando tengas todo listo, desplázate hacia abajo para configurar el entorno del lab.
Configuración
Antes de hacer clic en el botón Comenzar lab
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:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Cómo iniciar su lab y acceder a la consola de Google Cloud
-
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:
- El botón Abrir la consola de Google
- Tiempo restante
- Las credenciales temporales que debe usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haga clic en Abrir la consola de Google. 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.
Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta. -
Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.
-
Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.
Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales. -
Haga clic para avanzar por las páginas siguientes:
- Acepte los términos y condiciones.
- No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No se registre para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Cloud en esta pestaña.
Activa Cloud Shell
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.
- Haz clic en Activar Cloud Shell en la parte superior de la consola 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.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
-
Haz clic en Autorizar.
-
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
- Puedes solicitar el ID del proyecto con este comando (opcional):
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Tarea 1. Establece una zona de procesamiento
A lo largo de este lab, utilizaremos la herramienta de línea de comandos de gcloud para aprovisionar nuestros servicios.
- Antes de poder crear nuestro clúster de Kubernetes, tendremos que configurar una zona de procesamiento para que las máquinas virtuales de nuestro clúster se creen en la misma región. Esto podemos hacerlo con el comando
gcloud config set
. Ejecuta el siguiente comando en Cloud Shell para establecer la zona en:
Tarea 2. Crea un clúster nuevo
Ahora que nuestra zona está configurada, crearemos un clúster de contenedores nuevo.
- Ejecuta el siguiente comando para crear una instancia de un clúster llamado
hello-world
:
Con este comando, se crea un clúster nuevo con dos nodos o máquinas virtuales. Puedes configurar este comando con marcadores adicionales para cambiar la cantidad de nodos, los permisos predeterminados y otras variables. Obtén más información de la referencia de gcloud container clusters create.
Iniciar el clúster puede tardar unos minutos. Una vez que esté activo, deberías recibir un resultado similar al siguiente:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 3. Establece la configuración
Ahora que tenemos nuestro clúster activo y en funcionamiento, es hora de integrarlo a MongoDB. Usaremos un conjunto de réplicas para que nuestros datos tengan una disponibilidad alta y sean redundantes, un elemento indispensable para ejecutar aplicaciones de producción.
Para establecer la configuración, debemos seguir estos pasos:
- Descargar el conjunto de réplicas/archivo adicional de MongoDB (o contenedor de utilidades en nuestro clúster)
- Crear una instancia de StorageClass
- Crear una instancia de Headless Service
- Crear una instancia de StatefulSet
- Ejecutar el siguiente comando para clonar el conjunto de réplicas de MongoDB/Kubernetes desde el repositorio de GitHub:
- Una vez que se haya clonado, navega al directorio
StatefulSet
con el siguiente comando:
Una vez que hayas verificado que los archivos se descargaron y que estás en el directorio correcto, avancemos y creemos un StorageClass
de Kubernetes.
Crea la StorageClass
Una StorageClass
le indica a Kubernetes qué tipo de almacenamiento deseas utilizar para los nodos de la base de datos. En Google Cloud, tienes algunas opciones de almacenamiento: SSD y discos duros.
Si observas dentro del directorio StatefulSet
(puedes hacerlo ejecutando el comando ls
), verás los archivos de configuración de SSD y HDD para Azure y Google Cloud.
- Ejecuta el siguiente comando y revisa el archivo
googlecloud_ssd.yaml
:
Resultado:
Esta configuración crea una StorageClass nueva llamada “fast” que está respaldada por volúmenes SSD.
- Ejecuta el siguiente comando para implementar la StorageClass:
Ahora que nuestra StorageClass está configurada, el StatefulSet puede solicitar un volumen que se creará automáticamente.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 4. Implementa Headless Service y StatefulSet
Busca e inspecciona los archivos
- Antes de detenernos en el significado de Headless Service y StatefulSet, abramos el archivo de configuración (
mongo-statefulset.yaml
) donde se encuentran ambos:
Deberías recibir el siguiente resultado (sin los indicadores hacia el contenido de Headless Service y StatefulSet):
- Quita las siguientes marcas del archivo (líneas 49 y 50):
- Asegúrate de que esta sección del archivo sea similar a lo siguiente:
- Sal del editor nano presionando CTRL + X > Y > INTRO.
Headless Service: descripción general
La primera sección de mongo-statefulset.yaml
hace referencia a un headless service
. En términos de Kubernetes, un servicio describe políticas o reglas para acceder a Pods específicos. En resumen, un Headless Service es uno que no prescribe un balanceo de cargas. Cuando se combina con StatefulSets, nos da DNS individuales para acceder a nuestros Pods y, a su vez, nos brinda una forma de conectarnos a todos nuestros nodos de MongoDB individualmente. En el archivo yaml
, verifica que el campo clusterIP
esté configurado como None
para así garantizar que el servicio no tenga una interfaz gráfica.
StatefulSet: descripción general
La configuración de StatefulSet es la segunda sección de mongo-statefulset.yaml.
Se trata de un elemento básico de la aplicación: es la carga de trabajo que ejecuta MongoDB y organiza tus recursos de Kubernetes. Si hacemos referencia al archivo yaml
, vemos que la primera sección describe el objeto StatefulSet. Luego, pasamos a la sección Metadatos, en la que se especifican las etiquetas y la cantidad de réplicas.
Luego, vienen las especificaciones del Pod. terminationGracePeriodSeconds
se usa para cerrar el pod de manera estable cuando reduces la cantidad de réplicas. A continuación, se muestran las configuraciones de los dos contenedores. El primero ejecuta MongoDB con marcadores de línea de comandos que configuran el nombre del conjunto de réplicas. También, activa el volumen de almacenamiento continuo en /data/db
, la ubicación donde MongoDB guarda sus datos. El segundo contenedor ejecuta el archivo adicional. Este contenedor de archivo adicional configurará el conjunto de réplicas de MongoDB de forma automática. Como se mencionó anteriormente, un “archivo adicional” es un contenedor auxiliar que ayuda al principal a ejecutar sus trabajos y tareas.
Por último, está volumeClaimTemplates
. Esto es lo que se comunica con la StorageClass que creamos antes para aprovisionar el volumen. Aprovisiona un disco de 100 GB para cada réplica de MongoDB.
Implementa Headless Service y StatefulSet
Ahora que contamos con una comprensión básica sobre Headless Service y StatefulSet, vamos a implementarlos.
- Dado que los dos están empaquetados en
mongo-statefulset.yaml
, podemos usar el siguiente comando para ejecutar ambos:
Deberías recibir el siguiente resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 5. Conéctate al conjunto de réplicas de MongoDB
Ahora que tenemos un clúster en ejecución y nuestro conjunto de réplicas implementado, sigamos adelante y conectémonos a él.
Espera a que el conjunto de réplicas de MongoDB se implemente por completo
Kubernetes StatefulSets implementa cada Pod de manera secuencial. Espera a que un miembro del conjunto de réplicas de MongoDB arranque completamente y cree el disco de respaldo antes de iniciar el siguiente miembro.
- Ejecuta el siguiente comando para ver y confirmar que los tres miembros estén activos:
Resultado: los tres miembros están activos.
Inicia y visualiza el conjunto de réplicas de MongoDB
En este punto, deberías tener tres Pods creados en tu clúster. Estos corresponden a los tres nodos de tu conjunto de réplicas de MongoDB.
- Ejecuta este comando para verlos:
Resultado:
-
Espera a que se creen los tres miembros antes de continuar.
-
Conéctate al primer miembro del conjunto de réplicas:
Ahora tienes un entorno REPL
conectado a MongoDB.
- Creemos una instancia del conjunto de réplicas con una configuración predeterminada ejecutando el comando
rs.initiate()
:
- Para mostrar la configuración del conjunto de réplicas; ejecuta el comando
rs.conf()
:
Esto genera los detalles del miembro actual del conjunto de réplicas rs0
. En este lab, solo ves un miembro. Para obtener detalles de todos los miembros, debes exponer el conjunto de réplicas a través de servicios adicionales, como nodeport o el balanceador de cargas.
- Escribe “exit” y presiona Intro para salir de
REPL
.
Tarea 6. Escala el conjunto de réplicas de MongoDB
Una gran ventaja de Kubernetes y StatefulSets es que puedes aumentar y reducir la cantidad de réplicas de MongoDB con un solo comando.
- Para aumentar la cantidad de miembros del conjunto de réplicas de 3 a 5, ejecuta este comando:
En pocos minutos, habrá 5 Pods de MongoDB.
- Ejecuta este comando para verlos:
El resultado debería ser similar al siguiente:
- Para reducir la cantidad de miembros del conjunto de réplicas de 5 a 3, ejecuta este comando:
En pocos segundos, tendrás 3 Pods de MongoDB.
- Ejecuta este comando para verlos:
El resultado debería ser similar al siguiente:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 7. Usa el conjunto de réplicas de MongoDB
Cada Pod de StatefulSet que cuente con un Headless Service tendrá un nombre de DNS estable. La plantilla sigue este formato: <pod-name>.<service-name>
Esto significa que los nombres de DNS del conjunto de réplicas de MongoDB son los siguientes:
Puedes usar estos nombres directamente en el URI de cadena de conexión de tu app.
El uso de una base de datos está fuera del alcance de este lab, sin embargo, para este caso, el URI de cadena de conexión sería el siguiente:
Tarea 8. Realiza una limpieza
Ya que estás trabajando en un entorno de lab, tu proyecto y todos los recursos se limpiarán y se descartarán cuando termines el lab. Sin embargo, queremos mostrarte cómo limpiar los recursos por tu cuenta para reducir los costos y ser un buen ciudadano de la nube cuando uses tu propio entorno.
Para limpiar los recursos implementados, ejecuta los siguientes comandos que borrarán StatefulSet, Headless Service y los volúmenes aprovisionados.
- Borra StatefulSet:
- Borra el servicio:
- Borra los volúmenes:
- Por último, puedes borrar el clúster de prueba:
- Presiona Y seguido de Intro para continuar y borrar el clúster de prueba.
¡Felicitaciones!
Kubernetes Engine ofrece una manera eficaz y flexible de ejecutar contenedores en Google Cloud. StatefulSets te permite ejecutar cargas de trabajo con estado, como bases de datos, en Kubernetes. Esto fue lo que aprendiste:
- Cómo crear un conjunto de réplicas de MongoDB con Kubernetes StatefulSets
- Cómo conectarse al conjunto de réplicas de MongoDB
- Cómo escalar el conjunto de réplicas
Finaliza la Quest
Este lab de autoaprendizaje forma parte de la Quest Cloud Architecture. 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.
Realiza tu próximo lab
Continúa tu Quest con el siguiente lab o consulta estas sugerencias:
- Aplicación web para realizar análisis de datos en tiempo real con Kubernetes, Redis y BigQuery
- Cómo organizar la nube con Kubernetes
Próximos pasos y más información
- Obtén más información acerca de Kubernetes Engine.
- Lee la entrada de blog sobre Running MongoDB on Kubernetes with StatefulSets.
- ¿Quieres saber cuánto te costará ejecutar tus cargas de trabajo? Consulta la calculadora de precios. Puedes ingresar la cantidad de instancias, las CPU virtuales y los requisitos de memoria.
- Obtén $500 en créditos gratis para MongoDB en Google Cloud Marketplace (aplicable solo para clientes nuevos).
Capacitación y certificación de Google Cloud
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: 9 de octubre de 2023
Prueba más reciente del lab: 9 de octubre de 2023
Copyright 2024 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.