Despliegue de Clústeres Kubernetes en AKS y GKE

Clase 19 de 24Curso de Kubernetes

Azure Kubernetes Service (AKS)

Paso 1: Prerrequisitos

Antes de crear un clúster de AKS, asegúrate de tener lo siguiente:

  1. Suscripción de Azure:

    • Necesitas una suscripción activa de Azure. Si no tienes una, puedes crear una cuenta gratuita en Azure Free Account.
    • Para poder usar la cuenta de Azure y no tener límites de uso debes usar una tarjeta que tenga un saldo mínimo, para esta práctica no debería cobrarnos nada, solo validar que es una tarjeta real.
  2. Azure CLI instalado:

  3. Kubernetes CLI (kubectl):

    • Instala kubectl para interactuar con tu clúster de AKS. Puedes instalarlo ejecutando:

      az aks install-cli

Paso 2: Inicia sesión en Azure

Inicia sesión en tu cuenta de Azure usando la CLI de Azure:

az login

Esto abrirá una ventana del navegador para la autenticación. Una vez que inicies sesión, la CLI mostrará los detalles de tu suscripción. Debes seleccionar la suscripción que hayas configurado en el paso 1. Paso 3: Crea un grupo de recursos

image.png


Los clústeres de AKS se crean dentro de un grupo de recursos. Crea uno con el siguiente comando:

az group create --name --location
  • Reemplaza con el nombre que desees (por ejemplo, miGrupoDeRecursos).
  • Reemplaza con la región de Azure (por ejemplo, eastus, westeurope).

Ejemplo:

az group create --name k8scourse-aks-demo --location eastus\

image (1).png


Paso 4: Crea el clúster de AKS

Usa el siguiente comando para crear un clúster de AKS:

az aks create --resource-group --name --node-count --enable-addons monitoring --generate-ssh-keys
  • Reemplaza con el nombre de tu grupo de recursos.
  • Reemplaza con el nombre de tu clúster (por ejemplo, miClústerAKS).
  • Reemplaza con el número de nodos que deseas en tu clúster (por ejemplo, 3).

Ejemplo:

az aks create --resource-group k8scourse-aks-demo --name k8sCourseDemoAKS --node-count 2 --enable-addons monitoring --generate-ssh-keys

Como resultado de crear este clúster, el comando devolverá un JSON con los detalles de los recursos creados.

image (2).png

image (3).png

También puedes visualizar desde la consola tu nuevo clúster, para esto te diriges a la sección de Servicios de Kubernetes

Screenshot 2025-01-24 at 4.34.11 AM.png

Explicación de los parámetros:

  • -enable-addons monitoring: Habilita Azure Monitor para tu clúster.
  • -generate-ssh-keys: Genera automáticamente claves SSH para el clúster.

Paso 5: Conéctate al clúster de AKS

Una vez creado el clúster, necesitas configurar kubectl para conectarte a él. Ejecuta el siguiente comando:

az aks get-credentials --resource-group --name

Ejemplo:

az aks get-credentials --resource-group k8scourse-aks-demo --name k8sCourseDemoAKS

Este comando descarga las credenciales del clúster y configura kubectl para usarlas. Puedes usar varios clústers desde un mismo Kubectlpara esto puedes usar el comando kubectl config get-contexts y kubectl config use-context para seleccionar.

En este caso, después de validar el contexto, notarás que az aks configura el clúster de AKS por defecto como el contexto a usar.

image (4).png


Paso 6: Verifica el clúster

Para asegurarte de que tu clúster está funcionando, usa el siguiente comando:

kubectl get nodes

image (5).png

Paso 7: Limpia los recursos (Opcional)

Si ya no necesitas el clúster de AKS, elimínalo para evitar cargos innecesarios:

az aks delete --resource-group --name --yes --no-wait

También puedes eliminar el grupo de recursos para eliminar todos los recursos asociados:

az group delete --name --yes --no-wait

Problemas frecuentes

En ocasiones, dependiendo si tu cuenta es nueva, podrías enfrentar problemas con respecto a los permisos de tu suscripción. Tal como alguno de los siguientes:

Conflict({"error":{"code":"MissingSubscriptionRegistration","message":"The subscription is not registered to use namespace 'microsoft.insights'. See https://aka.ms/rps-not-found for how to register subscriptions.","details":[{"code":"MissingSubscriptionRegistration","target":"microsoft.insights","message":"The subscription is not registered to use namespace 'microsoft.insights'. See https://aka.ms/rps-not-found for how to register subscriptions."}]}}

image (6).png

Para solucionarlo, me apoyé en la documentación oficial, la cual indicaba que podría listar los permisos pendientes de registrar con el siguiente comando:

az provider list --output table

En mi caso, el permiso faltante era con respecto a microsoft.insights. Después de validar cuáles permisos faltaban, los agregue usando los siguientes comandos:

az provider register --namespace microsoft.insights az provider register --namespace Microsoft.ContainerService

Después de esperar a que el estado sea Registered, ya podemos continuar

image (7).png

Otro problema frecuenta con las cuentas nuevas es la falta de Quota de CPU.

image (8).png

Esto se puede solucionar desde el dashboard en la sección de Suscripción, en el menú de Proveedores de recursos debes buscar y registrar el proveedor *Microsoft.Compute.*

Google Kubernetes Engine (GKE)

Paso 1: Configura tu entorno de Google Cloud

  1. Crea una cuenta de Google Cloud:
    • Si no tienes una cuenta de Google Cloud, regístrate en Google Cloud Console.
    • Los nuevos usuarios suelen recibir créditos gratuitos para usar servicios como GKE.

image (9).png

  1. Habilita la facturación
  • Asegúrate de que la facturación esté habilitada en tu proyecto de Google Cloud. Sin facturación, no podrás crear un clúster en GKE.
  • En este paso es necesario que cuentes con una tarjeta de crédito, puedes usar una tarjeta que tenga un saldo mínimo, para esta práctica no debería cobrarnos nada, solo validar que es una tarjeta real.
  1. Instala las herramientas necesarias:

    Instala el Google Cloud SDK en tu máquina local. Puedes descargarlo desde Google Cloud SDK. Mi recomendación es que lo hagas desde la documentación oficial, ya que desde blogs o foros de internet puede apuntar a enlaces desactualizados o ejecutables maliciosos.

    Después de descargar y descomprimir el ejecutable desde el link, la instalación fue sencilla, solo fue ejecutar estos comandos para instalar las librerías y utilidades necesarias.

    ./google-cloud-sdk/install.sh
  2. Autentícate con Google Cloud

    Ejecuta el siguiente comando para iniciar sesión en tu cuenta de Google Cloud

    gcloud auth login

gcloud_login.png

Después de esto, tu browser abrira una pantalla donde podras seleccionar la cuenta que quieres usar y luego de esto ya estaras autenticado.

image (10).png

  1. Configura tu proyecto
  • En mi caso no tenía ningún proyecto creado, entonces cree uno para el curso y así empezar con un entorno limpio.

image (11).png

image (12).png

  • Luego podemos seleccionar el proyecto desde la consola

    gcloud config set project [PROJECT_ID]

image (13).png

Paso 2: Habilita las APIs necesarias

  • Habilita la API de Kubernetes Engine:

    • Ejecuta el siguiente comando:

      gcloud services enable container.googleapis.com
  • Habilita otras APIs si es necesario (por ejemplo, la API de Compute Engine):

    • Ejecuta:

      gcloud services enable compute.googleapis.com

Esto es necesario para poder interactuar con los clústeres de Kubernetes mediante la CLI

image (14).png

En caso de que no lo ejecutes o no tengas habilitados estos permisos te podrías encontrar con un error similar a este.

Screenshot 2025-01-24 at 2.27.09 AM.png

Paso 3: Crea un clúster en GKE

Ejecuta el siguiente comando para crear un clúster

gcloud container clústers create [clúster_NAME] \ --zone [ZONE] \ --num-nodes [NUMBER_OF_NODES]
  • Reemplaza [clúster_NAME] con el nombre deseado para tu clúster (por ejemplo, k8s-course-demo).
  • Reemplaza [ZONE] con la zona donde deseas desplegar el clúster (por ejemplo, us-central1-a).
  • Reemplaza [NUMBER_OF_NODES] con el número de nodos que deseas en el clúster.

Ejemplo:

gcloud container clústers create k8s-course-demo \ --zone us-central1-a \ --num-nodes 2

Resultado:

image (15).png

Paso 4: Conéctate a tu clúster de GKE

  • Obtén las credenciales del clúster para configurar kubectl:

    gcloud container clústers get-credentials [clúster_NAME] --zone [ZONE]

    Ejemplo:

    gcloud container clústers get-credentials k8s-course-demo --zone us-central1-a
  • Verifica la conexión:

    • Ejecuta el siguiente comando para listar los nodos en tu clúster:

      kubectl get nodes
    • Deberías ver una lista de nodos en tu clúster.

  • Error al consultar Pods o Nodos

image (16).png

En este caso la solución se encuentra en la documentación oficial, instalando el componente de autenticación para permitir que kubectl se conecte con clúster de GKE

gcloud components install gke-gcloud-auth-plugin

image (17).png

después de esto ya deberías poder ejecutar comandos tal cual como lo harías en minikube

image (18).png

Crear un clúster en GKE es muy sencillo con los pasos que acabamos de ejecutar. En este paso ya puedes desplegar tus aplicaciones de prueba en GKE. Recuerda, si no vas a usar tu clúster o recursos en ejecución, debes eliminar los recursos creados.

image (19).png

Paso 5: Limpia los recursos

Elimina el clúster cuando termines para evitar costos:

```bash gcloud container clústers delete [clúster_NAME] --zone [ZONE] ``` ```bash gcloud container clústers delete k8s-course-demo --zone us-central1-a ```

Resultado

image (20).png

En esta clase, aprendimos a desplegar clústeres de Kubernetes en dos de las plataformas más populares de la nube: Google Kubernetes Engine (GKE) y Azure Kubernetes Service (AKS). Exploramos los pasos clave, desde la configuración de los entornos hasta la creación, conexión y verificación de los clústeres, además de cómo solucionar problemas comunes que pueden surgir durante el proceso. Ahora tienes las herramientas necesarias para comenzar a trabajar con Kubernetes en entornos de producción o pruebas en la nube.

Kubernetes es una tecnología poderosa que está transformando la forma en que las aplicaciones modernas se desarrollan, despliegan y escalan. Sin embargo, lo que vimos hoy es solo el comienzo. Dominar Kubernetes requiere profundizar en conceptos como la gestión de pods, servicios, despliegues, almacenamiento persistente, monitoreo y seguridad.

Ahora que sabes que puedes usar cualquiera de estos 2 Cloud providers para desplegar tus aplicaciones altamente disponibles. Tu siguiente reto es explorar cuál de estos 2 Provider se acomoda más con tu caso de uso e intentar desplegar una aplicación básica en ambos clústeres y compara el rendimiento. Además, no olvides compartir tus hallazgos y preguntas en la sección de comentarios.

¡Nos vemos en la próxima clase! 🚀