Qual é o impacto do uso de Helm Deployments em vez do StatefulSets para bancos de dados como MongoDB ou MySQL?

7

A definição de um aplicativo sem estado parece se aplicar a servidores de banco de dados como MongoDB ou MySQL. Encontrei Helm Charts como uma espécie de repositório de modelos para o Kubernetes. No entanto, o estábulo cria todas as implantações de uso. Somente na incubadora, que não é fornecida como estável.

Qual é o impacto do uso de implantações para servidores de banco de dados?

Há problemas como sincronização / replicação ao executar várias instâncias em um cluster, por exemplo?

Segundo plano: desejo executar o MongoDB em um cluster de failover, para que pelo menos 2 instâncias estejam em execução.

Daniel
fonte

Respostas:

5

Quando o Kubernetes anunciou o novo recurso StatefulSet com o K8s v1.5 (convertendo-o do PetSetnome 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.

BoomShadow
fonte