Por que você não precisa de 3 nós no plano de controle do Kubernetes

Começa a circular um mito no mundo da tecnologia de que o Kubernetes necessita de pelo menos 3 control plane nodes para garantir alta disponibilidade. Mas será que essa afirmação é sempre verdadeira? A realidade é que nem sempre essa exigência se confirma.

Serviços como o AWS EKS, por exemplo, operam com apenas 2 servidores API, e ainda assim asseguram alta disponibilidade. Vamos entender melhor essa questão e desmistificar essa crença.

## A Realidade Sobre o Número de Control Plane Nodes

O mito de que o Kubernetes precisa de 3 control plane nodes para alta disponibilidade nem sempre se sustenta. O AWS EKS, por exemplo, funciona com apenas 2 servidores API, mantendo a alta disponibilidade.

Então, qual é a verdade por trás dessa história? A exigência de 3 nodes vem do etcd, e não do Kubernetes propriamente dito. O etcd, responsável por armazenar o estado do cluster, utiliza o consenso de Raft, que necessita de um quórum para funcionar corretamente.

É por isso que o AWS EKS utiliza 3 nodes etcd, garantindo a tolerância a falhas e a consistência dos dados. No entanto, o servidor API do Kubernetes, o Scheduler e o Controller Manager não precisam desse quórum. Essa é a razão pela qual o AWS EKS pode operar com apenas 2 servidores API, mantendo o control plane disponível.

A flexibilidade na configuração dos Kubernetes control plane nodes permite que diferentes modelos de alta disponibilidade sejam adotados, dependendo das necessidades e da infraestrutura disponível.

### Entendendo a Necessidade de Quorum

Para garantir a consistência e a disponibilidade dos dados, o etcd utiliza o algoritmo de consenso de Raft. Esse algoritmo exige que a maioria dos nodes (o quórum) concorde com as alterações no estado do cluster antes que elas sejam efetivadas.

Em um cenário com 3 nodes etcd, por exemplo, pelo menos 2 deles precisam estar de acordo para que uma alteração seja aceita. Isso garante que, mesmo que um dos nodes falhe, os outros dois ainda possam formar um quórum e manter o cluster funcionando.

Essa tolerância a falhas é essencial para garantir a alta disponibilidade do Kubernetes. Sem ela, uma simples falha em um dos nodes etcd poderia levar à indisponibilidade de todo o cluster.

### A Versatilidade do Kubernetes

É crucial entender que nem todo cluster Kubernetes segue o mesmo modelo de alta disponibilidade. Não se deve aplicar regras cegamente, mas sim compreender os motivos por trás de cada configuração.

O Kubernetes oferece flexibilidade para se adaptar a diferentes cenários e requisitos. Ao invés de seguir uma receita de bolo, é fundamental analisar as necessidades específicas de cada ambiente e configurar o cluster de acordo.

Essa abordagem permite otimizar o uso de recursos, reduzir custos e garantir a alta disponibilidade de forma eficiente. Afinal, o objetivo é ter um cluster Kubernetes que atenda às necessidades da aplicação, e não apenas seguir um padrão pré-definido.

O Kubernetes é uma plataforma versátil que pode ser adaptada a diferentes cenários e requisitos. Não existe uma solução única que sirva para todos os casos.

🔹 A primeira dica é entender os componentes: familiarize-se com os principais componentes do Kubernetes, como Pods, Services e Deployments.

🔹 A segunda dica é use namespaces: organize seus recursos em namespaces para isolar diferentes aplicações ou ambientes.

🔹 A terceira dica é monitore seu cluster: utilize ferramentas de monitoramento para acompanhar a saúde e o desempenho do seu cluster.

## AWS EKS: Uma Abordagem Diferente

O AWS EKS é um serviço gerenciado de Kubernetes que oferece uma abordagem interessante para a alta disponibilidade. Como vimos, ele opera com apenas 2 servidores API, mas garante a resiliência do control plane através de outras estratégias.

Uma das principais diferenças é que o AWS EKS utiliza uma arquitetura distribuída, onde os componentes do control plane são executados em diferentes zonas de disponibilidade. Isso significa que, mesmo que uma zona de disponibilidade fique indisponível, o cluster continua funcionando normalmente.

Além disso, o AWS EKS oferece recursos como o escalonamento automático do control plane, que permite aumentar ou diminuir a capacidade do cluster de acordo com a demanda. Essa flexibilidade garante que o cluster possa lidar com picos de tráfego sem comprometer a disponibilidade.

Ao adotar o AWS EKS, é possível simplificar a gestão do Kubernetes e focar nas aplicações, deixando a infraestrutura por conta da Amazon.

### A Importância de Compreender as Regras

A lição principal é que nem todo cluster Kubernetes segue o mesmo modelo de alta disponibilidade. Não se deve aplicar regras cegamente, mas sim entender a lógica por trás delas.

Cada ambiente tem suas particularidades, e o que funciona bem em um caso pode não ser o ideal em outro. Por isso, é fundamental analisar as necessidades específicas de cada projeto e adaptar a configuração do Kubernetes de acordo.

Ao invés de seguir um padrão pré-definido, é importante entender os componentes do Kubernetes, como o etcd, o servidor API, o Scheduler e o Controller Manager, e como eles interagem entre si. Dessa forma, é possível tomar decisões mais informadas e garantir a alta disponibilidade de forma eficiente.

Entender a fundo o funcionamento do Kubernetes permite tomar decisões mais assertivas e construir clusters mais resilientes e eficientes.

Em vez de seguir cegamente o mito dos 3 control plane nodes, é essencial entender as necessidades específicas do seu ambiente e adaptar a configuração do Kubernetes de acordo. A chave para o sucesso está na compreensão e na flexibilidade.

Este conteúdo foi auxiliado por Inteligência Artificiado, mas escrito e revisado por um humano.

Leave a Comment