Saltar al contenido principal

Capítulo 1.5 - Conceptos Fundamentales

Objetivos de Aprendizaje​

Al finalizar este capítulo, usted será capaz de:

  • Comprender qué es un Pod
  • Explicar el rol de un Deployment
  • Comprender los Services y sus tipos
  • Utilizar los Namespaces para la organización

Introducción​

Kubernetes utiliza varios conceptos fundamentales que usted usará constantemente. Este capítulo presenta los más importantes: Pods, Deployments, Services y Namespaces.


Pods: La Unidad Atómica​

Definición​

Un Pod es la unidad más pequeña desplegable en Kubernetes.

Características de un Pod​

Puntos clave:

  • Un Pod = 1 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)

Ejemplo de Pod​

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80

Deployments: Gestión del Ciclo de Vida​

Definición​

Un Deployment describe el estado deseado de su aplicación.

Funcionalidades de un Deployment​

Ventajas:

  • Gestiona los réplicas automáticamente
  • Rolling updates (sin interrupciones)
  • Rollback en caso de problema
  • Auto-recuperación

Ejemplo de Deployment​

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.25
ports:
- containerPort: 80

Services: Exposición de Aplicaciones​

Definición​

Un Service expone un conjunto de Pods como un servicio de red estable.

Problema resuelto:

  • Los Pods tienen IPs efímeras
  • Los Pods pueden ser recreados
  • ¿Cómo mantener una dirección estable?

Solución: El Service proporciona una IP estable y un nombre DNS

Tipos de Services​

1. ClusterIP (Por defecto)​

  • Servicio interno al cluster
  • Accesible solo desde el cluster
  • Utiliza el DNS interno

2. NodePort​

  • Expone en un puerto (30000-32767) de cada nodo
  • Accesible desde el exterior
  • Puerto único en todos los nodos

3. LoadBalancer​

  • Expone a través de un load balancer cloud
  • IP pública automática
  • Disponible en AWS, Azure, GCP

Ejemplo de Service​

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080

Namespaces: Aislamiento Lógico​

Definición​

Los Namespaces permiten dividir un cluster en varios entornos virtuales.

Ventajas de los Namespaces​

Casos de uso:

  • Separar dev/staging/prod
  • Aislar equipos
  • Gestionar cuotas de recursos
  • Aplicar políticas de seguridad

Namespaces por Defecto​

Kubernetes crea varios namespaces por defecto:

  • default: Namespace por defecto para sus recursos
  • kube-system: Componentes del sistema Kubernetes
  • kube-public: Recursos públicos
  • kube-node-lease: Heartbeats de los nodos

Ejemplo de Uso​

# Crear un namespace
kubectl create namespace production

# Desplegar en un namespace
kubectl apply -f deployment.yaml -n production

# Listar los pods en un namespace
kubectl get pods -n production

Relaciones Entre los Conceptos​

Vista General​

Jerarquía:

  1. Namespace: Contiene todo
  2. Deployment: Gestiona los Pods
  3. ReplicaSet: Mantiene el número de réplicas
  4. Pods: Ejecutan los contenedores
  5. Service: Expone los Pods

Resumen del Capítulo​

En este capítulo, usted ha aprendido:

Pod: Unidad más pequeña desplegable, 1+ contenedores
Deployment: Gestiona el ciclo de vida, réplicas, actualizaciones
Service: Expone los Pods con una IP estable
Tipos de Services: ClusterIP, NodePort, LoadBalancer
Namespaces: Aislamiento lógico, organización
Relaciones: Namespace → Deployment → Pods → Service


Próximos Pasos​

Ahora que domina los conceptos fundamentales:

Lab 1.1: Primer Deployment (práctica)
Quiz Módulo 1: Validar sus conocimientos


Capítulo creado el: Diciembre 2024