StatefulSet
Use 'StatefulSet' com aplicativos distribuídos com estado, que exigem que cada nó tenha um estado persistente . StatefulSet fornece a capacidade de configurar um número arbitrário de nós, para um aplicativo / componente com estado, por meio de uma configuração (réplicas = N).
Existem dois tipos de aplicativos distribuídos com estado: Master-Master e Master-Slave. Todos os nós em uma configuração Master-Master e nós Slave em uma configuração Master-Slave podem fazer uso de um StatefulSet.
Exemplos:
Master-Slave -> Datanodes (slaves) em um cluster Hadoop
Master-Master -> Nós de banco de dados (master-master) em um cluster Cassandra
Cada pod (réplica / nó) em um StatefulSet tem uma identidade de rede única e estável. Por exemplo, em um Cassandra StatefulSet com nome como 'cassandra' e número de nós de réplica como N, cada pod (nó) do Cassandra tem:
- Índice ordinal para cada vagem: 0,1, .., N-1
- ID de rede estável: cassandra-0, cassandra-1, .., cassandra-N-1
- Um volume persistente separado para cada pod em relação a um modelo de declaração de volume, ou seja, um armazenamento separado para cada pod (nó)
- Os pods são criados na ordem de 0 a N-1 e terminados na ordem reversa de N-1 a 0
Consulte: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
Desdobramento, desenvolvimento
A 'implantação', por outro lado, é adequada para aplicativos / serviços sem estado em que os nós não requerem nenhuma identidade especial. Um balanceador de carga pode alcançar qualquer nó que ele escolher. Todos os nós são iguais. Uma implantação é útil para criar qualquer número de nós arbitrários, por meio de uma configuração (réplicas = N).