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