StatefulSet

Los Deployment generalmente son para aplicaciones volátiles (stateless), aunque podemos guardar el estado del deployment adjuntando un Volumen Persistente (PV) y hacerlo persistente (stateful). En un deployment todos los pods compartirán el mismo Volumen y los datos en todos ellos serán los mismos.

Por contra en un StatefulSet cada réplica del pod tendrá su propio volumen, y cada uno creará su propio PVC (PersistentVolumeClaim). Por lo tanto, un conjunto StatefulSet con 3 réplicas creará 3 pods, cada uno con su propio volumen y PVC. Un ejemplo de uso de Stateful es por ejemplo si queremos crear una base de datos en alta disponibilidad en la que necesitamos un pod que sea el master que permite grabar los cambios y el resto de pods en sólo lectura, esto nos obligaría a tener identificado cada pods y su estado, por lo que neesitamos un StatefulSet