Orquestração de Contêineres
medium

Orquestração de Contêineres Question #019e3a4f

Question Statement
Orquestração de Contêineres
#kubernetes
#statefulset
#split-brain
#distributed-systems
#consensus
Medium

Qual recurso do Kubernetes você usaria para proteger contra cenários de split brain com sua aplicação distribuída?

A

Replication controllers

B

Protocolos de consenso

C

Rolling updates

D

StatefulSet

Correct

Official Explanation / Community Explanations

Resumo

Para proteger contra cenários de split brain em uma aplicação distribuída, você deve usar um StatefulSet. StatefulSets fornecem identificadores de rede estáveis e únicos e armazenamento persistente para cada pod, o que é essencial para aplicações que exigem implantação e escalonamento ordenados, como bancos de dados e sistemas distribuídos. Split brain ocorre quando um cluster se divide em várias partições que não conseguem se comunicar, levando a estados conflitantes. StatefulSets ajudam a prevenir isso garantindo que cada pod tenha uma identidade única e que o armazenamento esteja vinculado a essa identidade, permitindo que a aplicação use protocolos de consenso (como Raft ou Paxos) para manter a consistência.

Como Funciona

StatefulSets atribuem a cada pod um hostname estável (por exemplo, pod-0, pod-1) e uma persistent volume claim que persiste durante o reagendamento. Isso permite que aplicações distribuídas usem eleição de líder e algoritmos de consenso para coordenar o estado. Por exemplo, um cluster de banco de dados usando um StatefulSet pode fazer com que cada pod saiba seu papel (líder/seguidor) com base em seu índice ordinal, e se ocorrer uma partição de rede, os pods na partição majoritária podem continuar operando enquanto a partição minoritária espera, prevenindo split brain.

Por que a Resposta Correta está Certa

  • StatefulSet é projetado para aplicações stateful que exigem identidades estáveis e armazenamento persistente. Ele fornece a base para implementar coordenação baseada em consenso, que é a defesa padrão contra split brain.

Por que as Respostas Incorretas estão Erradas

  • Replication controllers são um recurso legado que garante que um número especificado de réplicas de pod esteja em execução, mas não fornecem identidades estáveis ou armazenamento persistente. Pods criados por um replication controller são intercambiáveis e podem ser reagendados com novos nomes, tornando-os inadequados para aplicações que precisam manter estado entre reinicializações.
  • Protocolos de consenso (como Raft ou Paxos) são algoritmos usados para alcançar acordo entre nós distribuídos, mas não são um recurso do Kubernetes. O Kubernetes não implementa protocolos de consenso diretamente; em vez disso, fornece recursos como StatefulSets que permitem que aplicações usem tais protocolos.
  • Rolling updates são uma estratégia de implantação para atualizar pods gradualmente com zero downtime. Eles não abordam cenários de split brain, pois focam na atualização de versões de aplicação em vez de manter a consistência durante partições de rede.

Conclusão Principal

Use StatefulSets para aplicações distribuídas que exigem identidades estáveis e armazenamento persistente para implementar coordenação baseada em consenso e evitar split brain.