Saltar al contenido principal

Gestionando los ReplicaSet

En esta unidad, aprenderemos a crear y gestionar un recurso ReplicaSet que controlará un conjunto de Pods. Utilizaremos el archivo nginx-rs.yaml que estudiamos en la unidad anterior.

Creación del ReplicaSet

Aunque en la unidad anterior usamos kubectl create para crear los recursos de nuestro clúster, es recomendable usar kubectl apply. La diferencia radica en cómo actuamos sobre el clúster:

  • Configuración imperativa de objetos: La definición del objeto está guardada en un archivo YAML y ejecutamos un comando imperativo. Posteriormente, no podremos modificar el objeto; habrá que borrarlo y crearlo de nuevo. Ejemplos:

    kubectl create -f recurso.yaml
    kubectl delete -f recurso.yaml
  • Configuración declarativa de objetos: No se definen las acciones a realizar. Al aplicar la configuración del objeto, indicamos un estado deseado al que queremos llegar. Posteriormente, si la definición cambia, podremos actualizar el objeto. Recomendado en producción. Ejemplo:

    kubectl apply -f recurso.yaml

Para crear nuestro ReplicaSet, ejecutamos:

kubectl apply -f nginx-rs.yaml

Podemos ver los recursos creados con:

kubectl get rs,pods

Observamos que queríamos crear 2 réplicas del Pod, y efectivamente se han creado.

Para obtener información detallada del ReplicaSet creado:

kubectl describe rs replicaset-nginx

Tolerancia a fallos

Kubernetes ofrece funcionalidades avanzadas como la tolerancia a fallos. ¿Qué pasa si borramos uno de los Pods creados? Inmediatamente se creará uno nuevo para mantener siempre las 2 réplicas deseadas:

kubectl delete pod <nombre_del_pod>
kubectl get pods

Escalabilidad

Para escalar el número de Pods:

kubectl scale rs replicaset-nginx --replicas=5
kubectl get pods

Otra forma es cambiar el parámetro replicas en el archivo YAML y volver a aplicar la configuración:

kubectl apply -f nginx-rs.yaml

La escalabilidad puede ser tanto para aumentar como para reducir el número de Pods:

kubectl scale rs replicaset-nginx --replicas=1

Eliminando el ReplicaSet

Por último, si borramos un ReplicaSet, se borrarán todos los Pods asociados:

kubectl delete rs replicaset-nginx

Otra forma de borrar el recurso es utilizando el archivo YAML:

kubectl delete -f nginx-rs.yaml