Creación y Despliegue de Clúster Kubernetes en Google Cloud

Clase 22 de 48Entrenamiento de Google Cloud Platform

Contenido del curso

Compute on Google Cloud Platform

Google Kubernetes Engine

Streaming Data Analytics

Machine Learning

Resumen

Desplegar aplicaciones en contenedores sobre Google Cloud Platform requiere dominar herramientas como gcloud, kubectl y entender la arquitectura de Kubernetes. A continuación se explica paso a paso cómo levantar un cluster, obtener credenciales y exponer un servicio al exterior usando un load balancer.

¿Cómo preparar el entorno y definir las variables del cluster?

Antes de crear cualquier recurso, es fundamental ejecutar el comando gcloud init para validar tus credenciales y confirmar el proyecto en el que estás trabajando [0:12]. Puedes hacerlo desde tu terminal local o desde Cloud Shell, la consola integrada de Google Cloud.

El siguiente paso es definir dos variables esenciales:

  • Nombre del cluster: en este caso se usó platsy-cluster.
  • Zona de despliegue: se eligió us-central1-a por cercanía geográfica [0:30].

Para elegir la zona más conveniente según tu ubicación, se recomienda visitar gcping.com, un sitio que muestra las latencias hacia cada región de Google Cloud y te ayuda a tomar una decisión informada [0:40].

¿Qué comando se usa para crear el cluster y qué add-ons incluir?

La creación del cluster se realiza comunicándose con Borg, el orquestador interno de Google que reserva los recursos de cómputo. El comando principal es gcloud container clusters create junto con el nombre definido en la variable [0:52].

Se agregaron tres add-ons opcionales pero útiles:

  • Horizontal Pod Autoscaling: permite escalar automáticamente los pods según la demanda.
  • HTTP Load Balancing: habilita el balanceo de carga a nivel HTTP.
  • Cloud Run: prepara el cluster para usar proxies tipo Envoy con Istio en futuros despliegues [1:05].

También se habilitaron capacidades adicionales importantes. La opción de dar alias a las IP de los servicios permite referenciar direcciones mediante nombres en lugar de IPs fijas, lo cual es una buena práctica cuando se conecta un balanceador de carga a un pod [1:30]. Se activó Stackdriver para tener visibilidad y monitoreo de lo que ocurre dentro del cluster [1:50].

Como banderas obligatorias se especificó el tipo de máquina n1-standard-2 y la zona de despliegue [1:55]. Al finalizar, el cluster queda creado mostrando el nombre, la locación, la versión de Google Kubernetes Engine y la master IP [2:20].

¿Cómo obtener credenciales para conectarse al nodo master?

Borg crea un nodo master y tres nodos workers. Para hacer un despliegue necesitas comunicarte directamente con el nodo master usando kubectl, pero primero debes autenticarte [2:35].

El comando gcloud container clusters get-credentials solicita a Borg un token de autenticación. Borg valida tu identidad en Google Cloud Platform, confirma que tienes permisos de administración y genera el token, que se almacena en el archivo kubeconfig de tu máquina local [2:50].

¿Cómo crear un deployment y exponer el servicio?

Con las credenciales listas, se ejecuta kubectl create deployment indicando un nombre y la imagen de contenedor desde Google Container Registry [3:15]. En este ejemplo se usó gcr.io/google-samples/hello-app.

Un detalle importante: se recomienda no usar la etiqueta latest en ambientes productivos. Esta etiqueta podría traer actualizaciones no probadas en dependencias o en el JDK. Siempre especifica la versión que ya hayas validado [3:35].

¿Qué significa exponer un servicio con kubectl expose?

Una vez creado el deployment, el servicio tiene una IP interna y puertos propios que no son accesibles desde fuera del cluster. La exposición consiste en hacer visible ese servicio al exterior [3:55].

El comando kubectl expose deployment con tipo LoadBalancer y puerto objetivo 8080 crea un balanceador de carga que conecta el tráfico externo con el pod interno [4:10].

Para verificar el estado:

  • kubectl get pods confirma que el pod está corriendo y saludable [4:25].
  • kubectl get service muestra la IP externa asignada, en este caso 34.72.196.13 [4:40].

Al acceder a esa IP desde un navegador, el servicio aparece funcionando en la red, confirmando que el despliegue fue exitoso [4:55].

Si quieres practicar más allá de este ejemplo, existen codelabs con ejercicios adicionales para profundizar en despliegues sobre Kubernetes. ¿Ya probaste levantar tu propio cluster? Comparte tu experiencia en los comentarios.