StatefulSet
Utilice 'StatefulSet' con aplicaciones distribuidas con estado, que requieren que cada nodo tenga un estado persistente . StatefulSet proporciona la capacidad de configurar un número arbitrario de nodos, para una aplicación / componente con estado, a través de una configuración (réplicas = N).
Hay dos tipos de aplicaciones distribuidas con estado: maestro-maestro y maestro-esclavo. Todos los nodos en una configuración maestro-maestro y los nodos esclavos en una configuración maestro-esclavo pueden hacer uso de un StatefulSet.
Ejemplos:
Maestro-Esclavo -> Nodos de datos (esclavos) en un clúster Hadoop
Maestro-Maestro -> Nodos de base de datos (maestro-maestro) en un clúster de Cassandra
Cada Pod (réplica / nodo) en un StatefulSet tiene una identidad de red única y estable. Por ejemplo, en un Cassandra StatefulSet con el nombre 'cassandra' y el número de nodos de réplica como N, cada pod (nodo) de Cassandra tiene:
- Índice ordinal para cada grupo: 0,1, .., N-1
- ID de red estable: cassandra-0, cassandra-1, .., cassandra-N-1
- Un volumen persistente separado para cada pod contra una plantilla de reclamo de volumen, es decir, un almacenamiento separado para cada pod (nodo)
- Los pods se crean en el orden 0 a N-1 y terminan en el orden inverso N-1 a 0
Consulte: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
Despliegue
La 'implementación', por otro lado, es adecuada para aplicaciones / servicios sin estado donde los nodos no requieren ninguna identidad especial. Un equilibrador de carga puede llegar a cualquier nodo que elija. Todos los nodos son iguales. Una implementación es útil para crear cualquier número de nodos arbitrarios, a través de una configuración (réplicas = N).