ReplicationController y ReplicaSet en Kubernetes


En este post te explico que diferencia tenemos en ReplicationController y ReplicaSet en Kubernetes

oscar Escrito por oscar 30 July 2025 623 0

En Kubernetes, tanto ReplicationController como ReplicaSet tienen el mismo objetivo principal: asegurar que un número específico de réplicas de un pod estén corriendo en todo momento. Sin embargo, hay diferencias clave entre ellos, principalmente en funcionalidad, flexibilidad y uso actual.

✅ Precondiciones

🔁 ¿Qué es un ReplicationController?

Es el primer mecanismo que ofrecía Kubernetes para garantizar la disponibilidad de réplicas de un pod.

🧪 Ejemplo básico de ReplicationController:

📄 Archivo: nginx-ReplicationController.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-rc
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80

📌 Aplica el ReplicationController:

kubectl apply -f nginx-ReplicationController.yaml

🔎 Validamos el ReplicationController con:

kubectl get replicationcontroller

Respuesta:

NAME       DESIRED   CURRENT   READY   AGE  
nginx-rc   3         3         3       2m41s

🔎 Verifica los pods:

kubectl get pods

Respuesta:

NAME             READY   STATUS    RESTARTS   AGE
nginx-rc-d9rcq   1/1     Running   0          22s
nginx-rc-r4z7l   1/1     Running   0          22s
nginx-rc-txp92   1/1     Running   0          22s

❌ Eliminamos un pod para verificar que el ReplicationController lo vuelva a crear, manteniendo la cantidad de replicas indicadas en el archivo yaml

kubectl delete pod nginx-rc-d9rcq

Como respuesta deberá eliminar el pod y el ReplicationController deberá crearlo automáticamente.

❌ El siguiente comando podemos eliminar el ReplicationController 

kubectl delete replicationcontroller nginx-rc

Respuesta: replicationcontroller "nginx-rc" deleted

🔁 ¿Qué es un ReplicaSet?

Es el reemplazo moderno de ReplicationController. Hace lo mismo, pero con mayores capacidades, y es el mecanismo usado por los Deployments.

Ventajas de ReplicaSet:

🧪 Ejemplo básico de ReplicaSet:

📄 Archivo: nginx-ReplicaSet.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80

 📌 Aplica el ReplicaSet:

kubectl apply -f nginx-ReplicaSet.yaml

Respuesta: replicaset.apps/nginx-rs created

🔎 Validamos el ReplicaSet con:

kubectl get replicaset

Respuesta:

NAME       DESIRED   CURRENT   READY   AGE
nginx-rs   3         3         3       28m

🔎 Verifica los pods:

kubectl get pods

Respuesta

NAME             READY   STATUS    RESTARTS   AGE
nginx-rs-4p9ms   1/1     Running   0          32m
nginx-rs-hwtzw   1/1     Running   0          32m
nginx-rs-nh9r2   1/1     Running   0          32m

❌ Eliminamos un pod para verificar que el ReplicaSet lo vuelva a crear, manteniendo la cantidad de replicas indicadas en el archivo yaml

kubectl delete pod nginx-rs-hwtzw

Como respuesta deberá eliminar el pod y el ReplicaSet deberá crearlo automáticamente.

✔️ Verificamos la replicaser con

kubectl describe replicaset

❌ El siguiente comando podemos eliminar el ReplicaSet

kubectl delete replicaset nginx-rs

Respuesta: replicaset.apps "nginx-rs" deleted

🔍 Diferencias clave

Característica ReplicationController ReplicaSet
API apiVersion: v1 apiVersion: apps/v1
Selector Solo igualdades (matchLabels) Igualdades + expresiones (matchExpressions)
Uso actual Obsoleto, no recomendado Reemplazo moderno y recomendado
Usado en Deployments ❌ No ✅ Sí
Soporte a futuro Limitado, desuso Activo y mantenido

✅ Conclusión


Comentario

Debe aceptar antes de enviar