DEV Community

DeividFerraz
DeividFerraz

Posted on

etcd: a camada de armazenamento do Kubernetes

Boa tarde, Pessoal. 👋

  • etcd: a camada de armazenamento do Kubernetes

Estudando Kubernetes, comecei a olhar com mais atenção para alguns componentes que quase não aparecem no uso do dia a dia, mas são fundamentais para o funcionamento do cluster. Um deles é o etcd.

Quando estamos em ambientes gerenciados, principalmente em nuvem, é muito fácil focar só em Deployment, Service, Ingress, escalabilidade e esquecer da base que sustenta o estado do cluster. Mas entender isso ajuda bastante a enxergar melhor o funcionamento do Kubernetes por trás dos panos.

━━━━━━━━━━━━━━━━━━

📌 O que é o etcd?

━━━━━━━━━━━━━━━━━━

O etcd é um banco de dados distribuído do tipo chave-valor que o Kubernetes usa para armazenar o estado do cluster.

É nele que ficam registradas informações como:

• Pods

• Services

• Deployments

• ConfigMaps

• Secrets

• Namespaces

• entre outros objetos do plano de controle

Ou seja, boa parte do que existe no cluster, em algum momento, depende do etcd para ter esse estado armazenado.

━━━━━━━━━━━━━━━━━━

⚙️ Como ele participa da arquitetura do Kubernetes

━━━━━━━━━━━━━━━━━━

Na prática, a comunicação acontece principalmente por meio do kube-apiserver. É ele que recebe as requisições, faz a validação, processa as informações e consulta ou grava esses dados no etcd.

Isso ajuda a entender melhor o papel do etcd: mesmo sem aparecer tanto no uso diário, ele é uma peça central da arquitetura.

Em ambientes com alta disponibilidade, o etcd pode rodar em múltiplos nós, formando um cluster distribuído. Isso aumenta a resiliência e reduz o risco de indisponibilidade em caso de falha de uma instância.

Por isso, a saúde do etcd impacta diretamente a saúde do cluster.

━━━━━━━━━━━━━━━━━━

💾 E o backup, como funciona?

━━━━━━━━━━━━━━━━━━

Como o etcd armazena o estado do cluster, manter backups regulares é essencial para recuperação em cenários de desastre, como perda de nós do plano de controle ou corrupção de dados.

A forma mais comum de fazer isso é por meio de snapshot.

Esse snapshot registra o conteúdo do banco naquele momento e pode ser usado depois em uma restauração.

Um detalhe importante: não é necessário parar o kube-apiserver para gerar esse backup.

O etcd permite criar snapshot a partir de um membro em execução usando o comando etcdctl snapshot save. Ou seja, esse processo pode ser feito com o serviço ativo.

━━━━━━━━━━━━━━━━━━

🧩 Exemplo de comando: doc: Operando clusters etcd para Kubernetes | Kubernetes

━━━━━━━━━━━━━━━━━━

🔎 O que esse comando faz: Leia a doc: https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/

━━━━━━━━━━━━━━━━━━

🛠️ Exemplo prático: Leia a doc também: https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/

━━━━━━━━━━━━━━━━━━

Depois de gerar o backup, ainda é possível validar o snapshot com:

  • etcdutl --write-out=table snapshot status /backup/etcd-snapshot.db

Kubernetes #DevOps #Cloud #SRE #Containers

Top comments (0)