MÓDULO 1 - Introducción a Kubernetes
Visión General
Este primer módulo le introduce a Kubernetes, la plataforma de orquestación de contenedores más utilizada en el mundo. Descubrirá por qué existe Kubernetes, cómo funciona a alto nivel y cuáles son los conceptos fundamentales que utilizará a lo largo de este curso.
Objetivos de Aprendizaje
Al final de este módulo, usted será capaz de:
- Explicar qué es Kubernetes y por qué es esencial
- Comprender la evolución de la contenerización hacia la orquestación
- Identificar los componentes principales de un clúster de Kubernetes
- Distinguir el Control Plane de los Worker Nodes
- Utilizar kubectl para interactuar con un clúster
- Iniciar un clúster local para la práctica
Duración Estimada
Teoría: 3-4 horas
Práctica: 2-3 horas
Total: 5-7 horas
Tabla de Contenidos
Parte 1: Introducción y Conceptos
- Capítulo 1.1 - ¿Qué es Kubernetes?
- Capítulo 1.2 - ¿Por qué Kubernetes?
- Capítulo 1.3 - Historia y Evolución
- Capítulo 1.4 - Arquitectura de Alto Nivel
- Capítulo 1.5 - Conceptos Fundamentales
Parte 2: Instalación y Práctica
Laboratorios Prácticos
Validación
¿Qué es Kubernetes?
Kubernetes (a menudo abreviado como K8s) es una plataforma open-source de orquestación de contenedores que automatiza el despliegue, el escalado y la gestión de aplicaciones contenerizadas.
Definición Simple
Imagine que tiene varias aplicaciones (microservicios) que deben:
- Ejecutarse en varios servidores
- Reiniciarse automáticamente si fallan
- Escalarse según la carga
- Comunicarse entre sí de manera confiable
Kubernetes hace todo esto automáticamente por usted.
Analogía: El Director de Orquesta
Así como un director de orquesta coordina a los músicos, Kubernetes coordina sus contenedores para que trabajen juntos en armonía.
Características Principales
Kubernetes ofrece:
-
Orquestación Automática
- Despliegue y reinicio automáticos
- Distribución de los contenedores en las máquinas disponibles
- Gestión del ciclo de vida de las aplicaciones
-
Escalado (Scaling)
- Aumento/reducción automática del número de instancias
- Adaptación a la carga de trabajo
- Optimización del uso de recursos
-
Auto-sanación (Self-Healing)
- Reinicio automático de contenedores que fallan
- Reemplazo de contenedores defectuosos
- Redistribución en caso de fallo de máquina
-
Descubrimiento de Servicios
- Comunicación automática entre servicios
- Balanceo de carga integrado
- Gestión interna de DNS
-
Gestión de Configuración
- Almacenamiento centralizado de la configuración
- Gestión segura de secretos
- Despliegues declarativos
¿Por qué Kubernetes?
Los Desafíos Sin Kubernetes
Antes de Kubernetes, desplegar aplicaciones contenerizadas era complejo:
Problemas:
- Gestión manual de los contenedores
- Sin reinicio automático
- Escalado complejo y manual
- Sin balanceo de carga integrado
- Gestión de configuración dispersa
- Sin service discovery
Las Ventajas Con Kubernetes
Ventajas:
- Orquestación automática completa
- Auto-sanación y alta disponibilidad
- Escalado horizontal y vertical
- Balanceo de carga integrado
- Service discovery automático
- Gestión centralizada de la configuración
Casos de Uso Típicos
Kubernetes es ideal para:
-
Microservicios
- Aplicaciones compuestas por muchos servicios pequeños
- Comunicación entre servicios
- Despliegue independiente de cada servicio
-
Aplicaciones Cloud-Native
- Aplicaciones diseñadas para la nube
- Escalabilidad automática
- Resiliencia y auto-sanación
-
DevOps y CI/CD
- Despliegues automatizados
- Rollback fácil en caso de problemas
- Múltiples entornos (dev, staging, prod)
-
Multi-cloud y Hybrid Cloud
- Despliegue en múltiples nubes
- Portabilidad entre entornos
- Evitar vendor lock-in
Historia y Evolución
La Evolución de la Contenerización
Google y Borg
Kubernetes fue creado por Google, que utilizaba internamente un sistema llamado Borg para orquestar millones de contenedores.
Borg (2003-2015):
- Sistema propietario de Google
- Gestionaba cientos de miles de jobs
- Base de la experiencia para Kubernetes
Kubernetes (2014):
- Versión open-source inspirada en Borg
- Nombrado por la palabra griega "κυβερνήτης" (piloto, timón)
- K8s = K + 8 letras + s
Adopción y Crecimiento
Cifras clave:
- Utilizado por millones de organizaciones
- Más de 100,000 commits en GitHub
- Más de 3,000 contribuidores
- Adoptado por todas las grandes empresas tecnológicas
Arquitectura de Alto Nivel
Visión General de un Clúster
Un clúster de Kubernetes está compuesto por dos tipos de máquinas:
Control Plane (Master)
El Control Plane es el "cerebro" del clúster. Toma todas las decisiones y gestiona el estado del clúster.
Componentes del Control Plane:
-
API Server
- Punto de entrada único para todas las interacciones
- Valida y procesa las solicitudes
- Expone la API REST de Kubernetes
-
etcd
- Base de datos distribuida
- Almacena el estado del clúster
- Fuente única de la verdad
-
Controller Manager
- Ejecuta los bucles de control
- Supervisa el estado deseado vs el estado real
- Toma acciones correctivas
-
Scheduler
- Decide en qué nodo colocar los nuevos pods
- Considera los recursos y restricciones
- Optimiza la distribución
Worker Nodes
Los Worker Nodes ejecutan las aplicaciones. Cada nodo contiene:
Componentes de los Worker Nodes:
-
kubelet
- Agente que se comunica con el API Server
- Gestiona los pods en el nodo
- Supervisa la salud de los contenedores
-
kube-proxy
- Gestiona el networking a nivel de nodo
- Implementa los Services (balanceo de carga)
- Gestiona las reglas de red
-
Container Runtime
- Ejecuta los contenedores (Docker, containerd, CRI-O)
- Gestiona las imágenes y contenedores
- Interfaz estandarizada (CRI)
Conceptos Fundamentales
Pods
Un Pod es la unidad desplegable más pequeña en Kubernetes. Es un grupo de uno o más contenedores que comparten recursos.
Características:
- Un Pod = uno o más contenedores
- Los contenedores en un Pod comparten:
- La dirección IP
- Los volúmenes
- El espacio de nombres de red
- Los Pods son efímeros (pueden ser recreados)
Despliegues (Deployments)
Un Deployment describe el estado deseado de su aplicación (cuántos réplicas, qué imagen, etc.).
Funcionalidades:
- Gestión de réplicas (número de instancias)
- Rolling updates (actualizaciones sin interrupción)
- Rollback en caso de problemas
- Auto-sanación
Services
Un Service expone un conjunto de Pods como un servicio de red estable.
Tipos de Services:
- ClusterIP: Servicio interno al clúster
- NodePort: Expone en un puerto de cada nodo
- LoadBalancer: Expone a través de un load balancer cloud
- ExternalName: Alias hacia un servicio externo
Namespaces
Los Namespaces permiten dividir un clúster en varios entornos virtuales.
Ventajas:
- Aislamiento lógico
- Separación de entornos
- Gestión de cuotas de recursos
- Control de acceso (RBAC)
Ecosistema Kubernetes
Kubernetes no está solo. Forma parte de un ecosistema rico de herramientas y proyectos.
Proyectos CNCF
La Cloud Native Computing Foundation (CNCF) alberga numerosos proyectos relacionados con Kubernetes:
- Kubernetes: Orquestación
- Prometheus: Monitoring
- Helm: Gestión de paquetes
- Istio: Service mesh
- Fluentd: Logging
- etcd: Almacenamiento distribuido
- Y muchos más...
Resumen del Módulo
En este módulo, usted ha aprendido:
Kubernetes es una plataforma de orquestación de contenedores
Automatiza el despliegue, el escalado y la gestión de aplicaciones
Un clúster está compuesto por un Control Plane y Worker Nodes
Los Pods son la unidad desplegable más pequeña
Los Deployments gestionan el ciclo de vida de las aplicaciones
Los Services exponen las aplicaciones de manera estable
Los Namespaces permiten el aislamiento lógico
Próximos Pasos
Ahora que comprende los conceptos básicos, está listo para:
Módulo 2: Arquitectura detallada y componentes de Kubernetes
Módulo 3: Pods y Deployments en la práctica
Recursos Complementarios
Módulo creado el: Diciembre 2024