Saltar a contenido

Kubernetes - Orquestación de Contenedores

Introducción a Kubernetes

Kubernetes (K8s) es una plataforma de orquestación de contenedores de código abierto que automatiza el despliegue, escalado y gestión de aplicaciones contenerizadas.

🚀 Iniciar con Kubernetes en 20 minutos

¿Nuevo en Kubernetes? Comienza aquí:

Arquitectura de Kubernetes

Componentes del plano de control

  • API Server: Punto de entrada para todas las operaciones
  • etcd: Base de datos distribuida que almacena la configuración
  • Scheduler: Asigna pods a nodos
  • Controller Manager: Mantiene el estado del cluster

Componentes del nodo

  • kubelet: Agente que ejecuta en cada nodo
  • kube-proxy: Gestiona las reglas de red
  • Container Runtime: Software que ejecuta los contenedores

Conceptos fundamentales

Pods

Los pods son la unidad más pequeña de Kubernetes. Contienen uno o más contenedores.

# pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mi-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

Deployments

Los deployments gestionan el estado deseado de los pods.

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mi-app
  template:
    metadata:
      labels:
        app: mi-app
    spec:
      containers:
      - name: nginx
        image: nginx:latest

Services

Los services exponen aplicaciones que se ejecutan en pods.

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: mi-service
spec:
  selector:
    app: mi-app
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

Comandos básicos

# Aplicar un manifiesto
kubectl apply -f archivo.yaml

# Listar pods
kubectl get pods

# Ver logs de un pod
kubectl logs <pod-name>

# Ejecutar comando en un pod
kubectl exec -it <pod-name> -- /bin/bash

# Escalar un deployment
kubectl scale deployment mi-deployment --replicas=5

Casos de uso

  • Microservicios
  • Aplicaciones nativas en la nube
  • CI/CD pipelines
  • Aplicaciones de alta disponibilidad

Próximos pasos

En las siguientes secciones exploraremos:

  • Configuración avanzada de clusters
  • Gestión de almacenamiento
  • Redes y políticas de seguridad
  • Monitoreo y logging
  • Helm y gestión de paquetes

Preguntas frecuentes (FAQs)

¿Cuál es la diferencia entre un Pod y un Deployment?

Un Pod es la unidad más pequeña en Kubernetes (uno o más contenedores). Un Deployment gestiona réplicas de Pods, actualizaciones y rollback automático.

¿Cómo exponer mi aplicación fuera del cluster?

Usa Services (ClusterIP, NodePort, LoadBalancer) o Ingress para HTTP/HTTPS. Para pruebas rápidas, NodePort expone en un puerto del nodo.

¿Por qué mi Pod está en estado Pending?

Revisa con kubectl describe pod <pod>. Causas comunes: falta de recursos (CPU/memoria), problemas de scheduling, o nodos no disponibles.

¿Cómo persistir datos en Kubernetes?

Usa PersistentVolumes (PV) y PersistentVolumeClaims (PVC). Para bases de datos, considera StorageClasses con provisionamiento dinámico.

¿Cuál es la diferencia entre ConfigMap y Secret?

ConfigMap: Almacena datos no sensibles (variables de entorno, archivos de config). Secret: Para datos sensibles (passwords, tokens, certificados) - están base64 encoded pero no encriptados por defecto.

Recursos adicionales

Videos tutoriales

Video: Kubernetes en 5 minutos - Introducción rápida y completa

Documentación oficial

Comunidad


¿Buscas comandos rápidos?

Consulta nuestras Recetas rápidas para comandos copy-paste comunes.

¿Problemas con Kubernetes?

Revisa nuestra sección de troubleshooting para soluciones a errores comunes.