Introducción a Kubernetes Engine
Google Kubernetes Engine (GKE) es un servicio de administración de clústeres de Kubernetes totalmente administrado que te permite ejecutar aplicaciones en contenedores en la infraestructura de Google Cloud. Kubernetes es un sistema de orquestación de contenedores de código abierto que automatiza la implementación, el escalado y la administración de aplicaciones en contenedores.
Objetivos del Módulo
- Comprender qué es Google Kubernetes Engine (GKE).
- Aprender a crear y gestionar clústeres de Kubernetes en GKE.
- Desplegar aplicaciones en un clúster de GKE.
- Configurar el escalado automático y la actualización continua.
Conceptos Clave
- Clúster de Kubernetes: Un conjunto de máquinas (nodos) que ejecutan aplicaciones en contenedores gestionadas por Kubernetes.
- Nodo: Una máquina virtual en el clúster de Kubernetes.
- Pod: La unidad más pequeña y simple en el modelo de objetos de Kubernetes, que puede contener uno o más contenedores.
- Deployment: Un objeto de Kubernetes que gestiona un conjunto de réplicas de pods.
- Service: Un objeto de Kubernetes que define una política para acceder a un conjunto lógico de pods.
Configuración de un Clúster de GKE
Paso 1: Crear un Clúster de GKE
- Accede a la consola de GCP: Ve a la Consola de Google Cloud.
- Navega a Kubernetes Engine: En el menú de navegación, selecciona "Kubernetes Engine" y luego "Clústeres".
- Crear Clúster: Haz clic en "Crear clúster".
- Configura el Clúster:
- Nombre del Clúster: Asigna un nombre a tu clúster.
- Zona: Selecciona la zona donde deseas desplegar tu clúster.
- Tipo de Máquina: Selecciona el tipo de máquina para los nodos.
- Número de Nodos: Especifica el número de nodos en el clúster.
- Crear: Haz clic en "Crear" para iniciar la creación del clúster.
Paso 2: Configurar kubectl
kubectl
es la herramienta de línea de comandos para interactuar con Kubernetes.
- Instalar
kubectl
: Si no lo tienes instalado, sigue las instrucciones en la documentación oficial. - Configurar
kubectl
para GKE:
Reemplazagcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE] --project [PROJECT_ID]
[CLUSTER_NAME]
,[ZONE]
y[PROJECT_ID]
con los valores correspondientes.
Desplegar una Aplicación en GKE
Paso 1: Crear un Deployment
Un Deployment gestiona un conjunto de réplicas de pods.
- Archivo de configuración YAML: Crea un archivo
deployment.yaml
con el siguiente contenido:apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: replicas: 3 selector: matchLabels: app: hello-world template: metadata: labels: app: hello-world spec: containers: - name: hello-world image: gcr.io/google-samples/hello-app:1.0 ports: - containerPort: 8080
- Aplicar el Deployment:
kubectl apply -f deployment.yaml
Paso 2: Exponer el Deployment como un Servicio
- Archivo de configuración YAML para el Servicio: Crea un archivo
service.yaml
con el siguiente contenido:apiVersion: v1 kind: Service metadata: name: hello-world-service spec: type: LoadBalancer selector: app: hello-world ports: - protocol: TCP port: 80 targetPort: 8080
- Aplicar el Servicio:
kubectl apply -f service.yaml
Verificar el Despliegue
- Obtener la IP del Servicio:
kubectl get services
- Acceder a la Aplicación: Abre un navegador web y accede a la IP externa del servicio.
Escalado Automático y Actualización Continua
Escalado Automático
- Habilitar el escalado automático:
kubectl autoscale deployment hello-world --cpu-percent=50 --min=1 --max=10
Actualización Continua
- Actualizar la imagen del contenedor:
kubectl set image deployment/hello-world hello-world=gcr.io/google-samples/hello-app:2.0
Ejercicio Práctico
Ejercicio: Desplegar una Aplicación en GKE
- Crear un Clúster de GKE: Sigue los pasos mencionados anteriormente.
- Configurar
kubectl
: Configurakubectl
para interactuar con tu clúster. - Desplegar una Aplicación: Crea y aplica los archivos
deployment.yaml
yservice.yaml
. - Escalar la Aplicación: Habilita el escalado automático.
- Actualizar la Aplicación: Realiza una actualización continua de la imagen del contenedor.
Solución
- Crear un Clúster de GKE: Ya cubierto en la sección anterior.
- Configurar
kubectl
: Ya cubierto en la sección anterior. - Desplegar una Aplicación:
kubectl apply -f deployment.yaml kubectl apply -f service.yaml
- Escalar la Aplicación:
kubectl autoscale deployment hello-world --cpu-percent=50 --min=1 --max=10
- Actualizar la Aplicación:
kubectl set image deployment/hello-world hello-world=gcr.io/google-samples/hello-app:2.0
Conclusión
En este módulo, hemos aprendido a crear y gestionar clústeres de Kubernetes en Google Kubernetes Engine (GKE). Hemos desplegado una aplicación, configurado el escalado automático y realizado una actualización continua. Estos conocimientos te permitirán gestionar aplicaciones en contenedores de manera eficiente en la infraestructura de Google Cloud.
En el próximo módulo, exploraremos las redes y la seguridad en GCP, donde aprenderemos a configurar redes VPC, balanceo de carga, y más.
Curso de Google Cloud Platform (GCP)
Módulo 1: Introducción a Google Cloud Platform
- ¿Qué es Google Cloud Platform?
- Configuración de tu cuenta de GCP
- Descripción general de la consola de GCP
- Comprensión de proyectos y facturación
Módulo 2: Servicios principales de GCP
Módulo 3: Redes y seguridad
Módulo 4: Datos y análisis
Módulo 5: Aprendizaje automático e IA
Módulo 6: DevOps y monitoreo
- Cloud Build
- Repositorios de código en la nube
- Cloud Functions
- Monitoreo de Stackdriver
- Cloud Deployment Manager
Módulo 7: Temas avanzados de GCP
- Híbrido y multi-nube con Anthos
- Computación sin servidor con Cloud Run
- Redes avanzadas
- Mejores prácticas de seguridad
- Gestión y optimización de costos