ReplicaSets: Escalabilidad y Tolerancia a Fallos
Resumen de una línea
ReplicaSet asegura que N réplicas de un Pod se ejecuten siempre, proporcionando escalabilidad automática y tolerancia a fallos.
Información
- Fuente: Curso Kubernetes - Módulo 4
- URL GitHub: https://github.com/iesgn/curso_kubernetes_cep/tree/main/modulo4
Problema: Pod Único
Pods son efímeros → si mueren, desaparecen.
Pod web-app ← muere → ❌ No hay servicio
Solución: ReplicaSet
Concepto: ReplicaSet
Definición
ReplicaSet mantiene siempre N réplicas de un Pod en ejecución:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: web-rs
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:latestGarantía
Especifico: 3 réplicas
Kubernetes: Siempre 3 Pods ejecutándose
Pod muere → Crea uno nuevo automáticamente ✅
Tengo 4 → Elimina 1 ✅
Tengo 2 → Crea 1 ✅
Características
Self-Healing (Auto-reparación)
Objetivo: 3 Pods
├─ Pod 1: Ejecutándose
├─ Pod 2: Ejecutándose
└─ Pod 3: Crash
↓
Kubernetes detecta → Crea Pod 3 nuevo
Escalabilidad Horizontal
# Escalar a 5 réplicas
kubectl scale rs web-rs --replicas=5
# Escalar a 2
kubectl scale rs web-rs --replicas=2Selector de Etiquetas
ReplicaSet usa etiquetas para identificar sus Pods:
selector:
matchLabels:
app: web # Pods con esta etiquetaCiclo de Vida
Crear ReplicaSet
kubectl apply -f replicaset.yamlVer Estado
# Listar ReplicaSets
kubectl get rs
# Ver detalles
kubectl describe rs web-rs
# Ver Pods asociados
kubectl get pods -l app=webActualizar Réplicas
# Aumentar
kubectl scale rs web-rs --replicas=5
# Editar
kubectl edit rs web-rsEliminar
# Elimina RS pero mantiene Pods
kubectl delete rs web-rs --cascade=orphan
# Elimina RS y Pods (por defecto)
kubectl delete rs web-rsLimitación: Sin Actualizaciones
⚠️ Problema: ¿Cómo actualizar a nueva versión?
Versión: nginx:1.20
ReplicaSet web-rs: 3 Pods con nginx:1.20
Necesito: nginx:1.21
Opciones con RS:
❌ Cambiar imagen → Pods viejos siguen igual
❌ Crear nuevo RS → Tráfico se divide
❌ Eliminar RS → Downtime
Solución: Deployments: Ciclo de Vida Completo
Relaciones
Conecta con
- Pods: Contenedores en Kubernetes — Lo que ReplicaSet replica
- Deployments: Ciclo de Vida Completo — Sucesor de ReplicaSets
Parte de
- Cargas de trabajo de Kubernetes — Cargas de trabajo