Quando o Kubernetes anunciou o novo recurso StatefulSet com o K8s v1.5 (convertendo-o do PetSet
nome antigo ), eles publicaram uma publicação muito boa no blog, mostrando um exemplo de seu uso: https://kubernetes.io/blog/2016/ 12 / statefulset-run-scale-stateful-applications-in-kubernetes /
O primeiro parágrafo tem uma descrição muito boa dos recursos diferenciadores que sempre se destacaram em minha mente:
... "no máximo um pod por índice" para implantação dos Pods no conjunto. Juntamente com a implantação ordenada, terminação ordenada, nomes de rede exclusivos e armazenamento estável persistente ...
Divida os importantes:
Nomes de rede exclusivos
Em uma implantação, não importa o nome da rede, pois qualquer pod deve ser capaz de acompanhar o trabalho. No entanto, quando você estiver executando coisas como um cluster com estado, poderá ter o conceito de 'mestres' e 'escravos'. Essa nomeação de rede exclusiva permitirá que você mantenha a distinção referenciando um pod específico , com um nome incremental previsível.
Rescisão ordenada
Isso é importante para reimplantações em um cluster com estado, pois você pode ter máquinas críticas que precisam permanecer por mais tempo. Se você tiver nós de coordenador ou 'líder', esses deverão ser os últimos a serem reiniciados. StatefulSets permite fazer isso. A postagem do blog vinculado até mostra um exemplo disso.
Armazenamento estável e persistente
Indiscutivelmente, essa é a diferença mais crucial. Por padrão, StatefulSets mantêm seu armazenamento. O Kubernetes não exclui automaticamente o armazenamento que foi anexado a um StatefulSet. O mesmo pode ser alcançado com implantações, mas não é o padrão.