Kubernetes (K8s) es una plataforma de código abierto para automatizar el despliegue, escalado y gestión de aplicaciones en contenedores.

¿Qué es Kubernetes?

Kubernetes es un sistema de orquestación de contenedores que automatiza la gestión de aplicaciones distribuidas, proporcionando escalado automático, balanceo de carga y recuperación automática de fallos.

Arquitectura de Kubernetes

Componentes del Cluster

  • Master Node: Nodo de control del cluster
  • Worker Nodes: Nodos que ejecutan las aplicaciones
  • Pods: Unidad mínima de despliegue
  • Services: Abstracción para acceso a pods
  • Deployments: Gestión de réplicas de pods

Componentes del Master

  • API Server: Interfaz de comunicación
  • etcd: Base de datos distribuida
  • Scheduler: Programador de pods
  • Controller Manager: Controladores del sistema

Conceptos Clave

Pods

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:1.14
    ports:
    - containerPort: 80

Services

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

Deployments

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14
        ports:
        - containerPort: 80

Funcionalidades Principales

Escalado Automático

  • Horizontal Pod Autoscaler (HPA): Escalado basado en métricas
  • Vertical Pod Autoscaler (VPA): Ajuste de recursos
  • Cluster Autoscaler: Escalado del cluster

Balanceo de Carga

  • Service Load Balancing: Balanceo interno
  • Ingress: Balanceo externo con reglas
  • External Load Balancers: Integración con cloud providers

Gestión de Configuración

  • ConfigMaps: Configuración no sensible
  • Secrets: Datos sensibles
  • Volumes: Almacenamiento persistente

Seguridad en Kubernetes

RBAC (Role-Based Access Control)

1
2
3
4
5
6
7
8
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

Network Policies

1
2
3
4
5
6
7
8
9
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

Pod Security Standards

  • Privileged: Sin restricciones
  • Baseline: Restricciones mínimas
  • Restricted: Restricciones máximas

Monitoreo y Observabilidad

Métricas

  • cAdvisor: Métricas de contenedores
  • kube-state-metrics: Estado del cluster
  • Node Exporter: Métricas de nodos

Logging

  • Fluentd: Recopilación de logs
  • Fluent Bit: Agente ligero de logs
  • ELK Stack: Elasticsearch, Logstash, Kibana

Tracing

  • Jaeger: Trazado distribuido
  • Zipkin: Trazado de microservicios
  • OpenTelemetry: Observabilidad unificada

Mejores Prácticas

Diseño de Aplicaciones

  • Stateless: Aplicaciones sin estado
  • Health Checks: Verificaciones de salud
  • Graceful Shutdown: Cierre ordenado
  • Resource Limits: Límites de recursos

Seguridad

  • Least Privilege: Mínimos privilegios
  • Image Security: Imágenes seguras
  • Network Segmentation: Segmentación de red
  • Secret Management: Gestión de secretos

Operaciones

  • Backup: Respaldos del cluster
  • Updates: Actualizaciones graduales
  • Monitoring: Monitoreo continuo
  • Documentation: Documentación actualizada

Conceptos Relacionados

Referencias