Service Configuration Question #019e3a4f
Qual é o número mínimo de membros etcd necessários para um cluster Kubernetes de alta disponibilidade?
Dois membros etcd.
Cinco membros etcd.
Seis membros etcd.
Três membros etcd.
Official Explanation / Community Explanations
Para um cluster Kubernetes de alta disponibilidade, o número mínimo de membros etcd necessários é três. Isso ocorre porque o etcd usa o algoritmo de consenso Raft, que requer uma maioria de nós para concordar com um líder e confirmar escritas. Com três membros, o cluster pode tolerar a falha de um membro (já que a maioria é 2 de 3). Com apenas dois membros, uma única falha resultaria em um empate (1 contra 1), impedindo o cluster de alcançar consenso e causando perda de quorum. Cinco ou seis membros não são o mínimo; eles fornecem maior tolerância a falhas (por exemplo, cinco tolera duas falhas), mas não são necessários para alta disponibilidade básica.
Como Funciona
O etcd é um armazenamento de chave-valor distribuído que usa o protocolo de consenso Raft para manter a consistência em todo o cluster. O Raft requer que uma maioria (quorum) de nós esteja disponível para eleger um líder e confirmar escritas. O quorum é calculado como floor(N/2) + 1, onde N é o número de membros. Para N=3, o quorum é 2; para N=2, o quorum é 2 (mas uma única falha reduz os nós disponíveis para 1, que é menor que 2). Portanto, três é o menor número ímpar que fornece tolerância a falhas sem cenários de split-brain.
Por que o Valor Correto está Certo
- Três membros etcd: Este é o mínimo necessário para alcançar alta disponibilidade. Com três membros, o cluster pode sobreviver à perda de um membro enquanto ainda mantém o quorum. Esta é a recomendação padrão para clusters Kubernetes de produção.
Por que os Valores Incorretos estão Errados
- Dois membros etcd: Um cluster etcd de dois nós não pode tolerar nenhuma falha de nó único, pois perder um nó deixa apenas um nó, que é menor que o quorum de 2. Isso resulta em perda de quorum e o cluster fica indisponível.
- Cinco membros etcd: Embora cinco membros forneçam maior tolerância a falhas (podem tolerar duas falhas), não é o requisito mínimo. Usar cinco membros aumenta a sobrecarga e é desnecessário para alta disponibilidade básica.
- Seis membros etcd: Seis membros são ainda mais do que o necessário e introduzem complexidade adicional. O mínimo é três, não seis. Números pares são geralmente evitados no Raft porque não melhoram a tolerância a falhas em relação ao próximo número ímpar inferior (por exemplo, seis tolera duas falhas, o mesmo que cinco, mas requer mais recursos).