4.2 Gestionando los ReplicaSet

Creación del ReplicaSet

Aunque en la unidad anterior usamos kubectl create para crear los recursos de nuestro cluster, es recomendable usar kubectl apply. La diferencia es la forma en la que actuamos sobre el cluster:

  • Configuración imperativa de objetos: La definición del objeto está guardada en un fichero 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. Cuando se aplica la configuración del objeto estamos indicando un estado deseado al que queremos llegar. Posteriormente si la definición cambia, podremos cambiar el objeto. Recomendado en producción. Ejemplo:

      kubectl apply -f recurso.yaml
    

Por lo tanto para crear nuestro ReplicaSet, ejecutamos:

kubectl apply -f nginx-rs.yaml

Y podemos ver los recursos que se han creado con:

kubectl get rs,pods

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

Si queremos obtener información detallada del recurso ReplicaSet que hemos creado:

kubectl describe rs replicaset-nginx

Tolerancia a fallos

Y ahora comenzamos con las funcionalidades llamativas de Kubernetes. ¿Qué pasaría si borro uno de los Pods que se han creado? Inmediatamente se creará uno nuevo para que siempre estén ejecutándose los Pods deseados, en este caso 2:

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 de hacerlo sería cambiando el parámetro replicas de fichero yaml, y volviendo a ejecutar:

kubectl apply -f nginx-rs.yaml

La escalabilidad puede ser para aumentar el número de Pods o para reducirla:

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 utilizar el fichero yaml:

kubectl delete -f nginx-rs.yaml