Introducción
Kubernetes es una plataforma de código abierto diseñada para automatizar el despliegue, escalado y operación de aplicaciones en contenedores. Originalmente desarrollado por Google, Kubernetes ha sido donado a la Cloud Native Computing Foundation (CNCF) y se ha convertido en el estándar de facto para la orquestación de contenedores.
Objetivos de Aprendizaje
Al final de esta sección, deberías ser capaz de:
- Entender qué es Kubernetes y por qué es importante.
- Conocer los beneficios de usar Kubernetes.
- Identificar los componentes básicos de Kubernetes.
¿Qué es Kubernetes?
Kubernetes, a menudo abreviado como K8s, es una plataforma de orquestación de contenedores que permite gestionar aplicaciones en contenedores a gran escala. Kubernetes proporciona una infraestructura para desplegar, mantener y escalar aplicaciones de manera eficiente.
Beneficios de Kubernetes
-
Automatización del Despliegue y Gestión:
- Kubernetes automatiza el despliegue de aplicaciones, lo que reduce el tiempo y el esfuerzo necesarios para poner en marcha nuevas versiones de software.
-
Escalabilidad:
- Permite escalar aplicaciones de manera horizontal (añadiendo más instancias de una aplicación) y vertical (aumentando los recursos de una instancia).
-
Alta Disponibilidad:
- Kubernetes asegura que las aplicaciones estén siempre disponibles, gestionando automáticamente la recuperación de fallos y la distribución de cargas.
-
Portabilidad:
- Al ser una plataforma de código abierto, Kubernetes puede ejecutarse en cualquier entorno, ya sea en la nube, en servidores locales o en un entorno híbrido.
-
Gestión de Configuración y Secretos:
- Kubernetes facilita la gestión de configuraciones y secretos de manera segura y eficiente.
Componentes Básicos de Kubernetes
-
Nodo (Node):
- Un nodo es una máquina (física o virtual) que ejecuta aplicaciones en contenedores. Cada nodo contiene los servicios necesarios para ejecutar pods y está gestionado por el plano de control de Kubernetes.
-
Pod:
- Un pod es la unidad más pequeña y simple en el modelo de objetos de Kubernetes. Un pod representa una instancia en ejecución de una aplicación en contenedores.
-
Clúster (Cluster):
- Un clúster es un conjunto de nodos gestionados por Kubernetes. El clúster es el entorno en el que se despliegan y gestionan las aplicaciones.
-
Plano de Control (Control Plane):
- El plano de control es responsable de gestionar el estado del clúster. Incluye componentes como el servidor API de Kubernetes, el controlador de administrador y el programador.
-
Servicio (Service):
- Un servicio en Kubernetes es una abstracción que define un conjunto lógico de pods y una política para acceder a ellos. Los servicios permiten la comunicación entre diferentes componentes de una aplicación.
Ejemplo Práctico
A continuación, se muestra un ejemplo básico de un archivo de configuración de Kubernetes para desplegar una aplicación simple en un pod.
apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app-container image: nginx:1.14.2 ports: - containerPort: 80
Explicación del Código
apiVersion: v1
: Especifica la versión de la API de Kubernetes que se está utilizando.kind: Pod
: Define el tipo de objeto que se está creando, en este caso, un pod.metadata
: Proporciona metadatos sobre el pod, como su nombre (name: my-app
).spec
: Define las especificaciones del pod.containers
: Lista de contenedores que se ejecutarán en el pod.name
: Nombre del contenedor.image
: Imagen del contenedor que se utilizará.ports
: Lista de puertos que se expondrán desde el contenedor.
Ejercicio Práctico
Ejercicio 1: Crear un Pod Simple
- Crea un archivo YAML llamado
simple-pod.yaml
. - Define un pod que ejecute una imagen de
nginx
con el puerto 80 expuesto. - Aplica el archivo de configuración usando
kubectl
.
Solución:
Archivo simple-pod.yaml
:
apiVersion: v1 kind: Pod metadata: name: simple-nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
Comando para aplicar el archivo:
Resumen
En esta sección, hemos aprendido qué es Kubernetes, sus beneficios y los componentes básicos que lo conforman. También hemos visto un ejemplo práctico de cómo definir y desplegar un pod simple utilizando un archivo de configuración YAML. Con esta base, estamos listos para profundizar en la arquitectura de Kubernetes en la siguiente sección.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster