3
respostas

Dúvida

O Prof. disse: "o Kubernetes não permite que aplicações de Deployment acessem dados persistentes, ou seja, dados gravados em disco."

Então se temos uma aplicação no qual temos dados (dinâmicos) de usuário salvo no disco (fotos, pdf, anexo) o ideal é usar StatefulSet ao invés de Deployment caso tenhamos mais de um Pod?

3 respostas

Resposta

Se a sua aplicação precisa acessar dados que não devem ser excluidos na mudança de Pods e você precisa garantir que cada instância (Pod) tenha acesso consistente a esses dados, o ideal é usar StatefulSet em vez de Deployment

Explicação

O Deployment é voltado para aplicações sem estado (como APIs, middlewares e etc), onde os pods são criados e destruídos dinamicamente, sem manter dados em disco entre recriações. Já o StatefulSet é indicado para aplicações com estado (como bancos de dados e sistemas de fila perenes) , pois garante que cada pod mantenha uma identidade fixa e um volume persistente associado a ele.

Mesmo com volume o Deployment não mantém os dados?

Sim, o Deployment pode manter dados, se você usar um Volume Persistente (PersistentVolumeClaim - PVC) corretamente configurado.

Porém, no Deployment, os Pods não têm identidade fixa. Se um Pod for recriado (o que acontece com frequência — atualizações, falhas, escalonamento etc), ele pode ser substituído por outro com um nome diferente, e o volume pode não ser reanexado automaticamente de forma consistente, principalmente se vários Pods estiverem compartilhando o mesmo volume.