Kubernetes ETCD: Revisão para a Prova CKA

Na jornada para se tornar um profissional certificado Kubernetes, o ETCD surge como um componente crítico que todo candidato à prova CKA precisa entender bastante. Neste artigo vou explicar mais sobre o ETCD, fornecendo insights valiosos, visando conquistar a certificação CKA, passando por alguns tópicos que eu estou usando nos estudos e na revisão para esta prova.

O Kubernetes ETCD é muito mais do que um simples componente de armazenamento de dados no ecossistema Kubernetes. Ele representa o cérebro distribuído e confiável que mantém o estado consistente de todo o cluster. Dominar seus conceitos não é apenas um requisito para a prova, mas uma habilidade essencial para todos que vão trabalhar com uma infraestrutura cloud-native.

prova cka curriculo
Prova CKA – Currículo

O que é ETCD?

Conceito

O ETCD é um banco de dados chave-valor distribuído que armazena todas as informações sobre o estado do cluster Kubernetes, sendo simples, seguro e rápido. Desenvolvido pela CoreOS, o ETCD desempenha um papel fundamental no gerenciamento de metadados e estado do cluster Kubernetes. Ele é responsável por:

  • Garantir alta disponibilidade e consistência.
  • Armazenar configurações do cluster.
  • Registrar a localização dos nodes.

Para simplificar, imagine o ETCD como o “cérebro” do cluster Kubernetes. Sem ele, o Kubernetes não teria como saber o que deve ser executado ou como reagir a mudanças. Por isso, compreender seu funcionamento é fundamental, especialmente na prova CKA, que exige conhecimentos práticos.

o que é etcd
Kubernetes master & application nodes

Detalhes adicionais

O ETCD é composto por três componentes principais:

  • Raft: é o algoritmo de consenso utilizado pelo ETCD para garantir a consistência dos dados.
  • Store: é o componente responsável por armazenar os dados do ETCD.
  • Proxy: é o componente responsável por fornecer uma interface de programação de aplicativos (API) para o ETCD.
  • O ETCD Datastore armazena informações a respeito do Cluster, como:
    • Nodes
    • PODs
    • Configs
    • Secrets
    • Accounts
    • Roles
    • Bindings
    • Others
  • Todas as informações obtidas a partir do comando kubectl get são obtidas a partir do ETCD Server.
  • A porta padrão onde o ETCD “escuta” é a porta 2379, como podemos ver no trecho da configuração do Pod do ETCD: --advertise-client-urls https://${INTERNAL_IP}:2379

Também podemos verificar através do processo em execução, conforme a imagem abaixo:

kubernetes etcd
Porta – ETCD

Arquitetura do ETCD

Modelo de armazenamento de dados

O ETCD utiliza um modelo de armazenamento de chave-valor simples, mas poderoso. Cada entrada é armazenada como um par chave-valor, permitindo recuperações rápidas e eficientes.

Exemplo de armazenamento de chave-valor:

{
    "name": "John,"age": 45,
    "location": "New York",
    "salary": 5000
}

Protocolo RAFT de consenso

O protocolo RAFT garante a consistência distribuída, sendo fundamental para a eleição de líderes e replicação de dados entre múltiplos nós.

O ETCD usa o algoritmo Raft para garantir que todos os nós tenham a mesma visão dos dados. É como se cada nó votasse para manter a consistência das informações.

Passos para instalação do ETCD

Pré-requisitos

  • Sistema Linux (testado em Ubuntu e CentOS)
  • Conexão com a internet
  • Permissões de usuário root ou sudo

1. Download dos binários

Baixe a versão mais recente do ETCD usando o comando curl:

# Verifique a versão mais recente em https://github.com/etcd-io/etcd/releases
VERSION="v3.5.9"
ARCH="amd64"
DOWNLOAD_URL="https://github.com/etcd-io/etcd/releases/download/${VERSION}/etcd-${VERSION}-linux-${ARCH}.tar.gz"

curl -L ${DOWNLOAD_URL} -o etcd-${VERSION}-linux-${ARCH}.tar.gz

2. Extrair os arquivos

Use o comando tar para extrair o arquivo compactado:

tar xzvf etcd-${VERSION}-linux-${ARCH}.tar.gz
cd etcd-${VERSION}-linux-${ARCH}/

3. Configurar ETCD

Copie os binários para um diretório no PATH:

sudo cp etcd etcdctl /usr/local/bin/

4. Criar usuário de sistema

Para segurança, crie um usuário dedicado para o serviço ETCD:

sudo useradd --no-create-home --shell /bin/false etcd

5. Criar diretórios de configuração

sudo mkdir -p /etc/etcd /var/lib/etcd
sudo chown -R etcd:etcd /var/lib/etcd

6. Configurar serviço Systemd

Crie um arquivo de serviço systemd:

sudo vi /etc/systemd/system/etcd.service

Cole o seguinte conteúdo:

[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
User=etcd
Type=notify
ExecStart=/usr/local/bin/etcd \
  --name etcd-server \
  --data-dir /var/lib/etcd \
  --listen-client-urls http://localhost:2379 \
  --advertise-client-urls http://localhost:2379

Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

7. Iniciar e habilitar o serviço

sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd

8. Verificar status do serviço

sudo systemctl status etcd

9. Teste básico

Verifique se o ETCD está funcionando corretamente:

etcdctl version
etcdctl put minhaChave "Valor de Teste"
etcdctl get minhaChave

Configurações Avançadas

Para configurações mais complexas, como clusters distribuídos, consulte a documentação oficial do ETCD.

Estratégias para Prova CKA

Principais Tópicos de ETCD para Estudo

Uma das áreas onde o etcd é mais explorado no exame CKA é na parte de troubleshooting. Você pode ser solicitado a identificar problemas no etcd ou até mesmo restaurar um backup. Aqui estão alguns tópicos importantes para revisar:

  1. Backup e Recuperação(Esse é um dos temas mais cobrados)
  • Comandos etcdctl snapshot save
  • Procedimentos de restauração de cluster
  1. Configuração de Cluster
  • Entendimento de peers e endpoints
  • Configurações de segurança
    • O etcd usa TLS para comunicação segura, e você precisa saber como configurar isso.
  1. Troubleshooting
  • Análise de logs
  • Verificação de saúde do cluster
    • Saiba diagnosticar problemas comuns, como falhas de comunicação ou corrupção de dados.

Comandos para ETCD

Durante o exame, você precisará executar tarefas no ETCD. Aqui estão alguns dos comandos mais importantes:

# Verificar o status do ETCD
ETCDCTL_API=3 etcdctl endpoint status --write-out=table \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

# Fazer backup do ETCD
ETCDCTL_API=3 etcdctl snapshot save snapshot.db \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

# Restaurar o ETCD a partir de um backup
ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --data-dir=/var/lib/etcd-restored

# Comandos gerais do etcdctl
etcdctl snapshot save 
etcdctl endpoint health
etcdctl get
etcdctl put

Boas Práticas para Prova CKA

Dicas essenciais

  • Pratique comandos de gerenciamento do ETCD
  • Simule cenários de recuperação
  • Entenda profundamente a arquitetura de cluster
  • ETCDCTL é utilizado para inserir ou obter dados do etcd. Ele existe nas versões 2 ou 3. Importante setar a versão via variável export ETCDCTL_API=3, pois alguns comandos podem não funcionar entre as versões.
  • Garanta que os caminhos para os arquivos de certificado para que o ETCDCTL possa autenticar no ETCD API Server estejam corretos. Os arquivos de certificado estão disponíveis no etcd-master nos seguintes caminhos:
--cacert /etc/kubernetes/pki/etcd/ca.crt
--cert /etc/kubernetes/pki/etcd/server.crt
--key /etc/kubernetes/pki/etcd/server.key
  • ETCD em HA(high Availability) elege um líder.
    • O líder processa os dados e envia uma cópia aos demais membros.
    • Após certo tempo, o algoritmo RAFT inicia uma nova votação e descartou aquele candidato que não enviou um sinal que ainda está online.
    • As quantidades de 3, 5 ou 7, são bons números para se usar, na quantidade de etcd para HA.
      • 3 suporta 1 instância inativa
      • 5 suporta 2 instâncias inativas
      • 7 suporta 3 instâncias inativas.
  • Cálculo de Quorum em Clusters ETCD, para entender a tolerância a falhas:
    • O cálculo do quorum em sistemas distribuídos segue a fórmula N/2 + 1, onde N representa o número total de nós. Veja como isso impacta diferentes configurações de cluster:

1 Nó:

  • Cálculo: (1/2) + 1 = 1
  • Resultado: Requer 1 nó para operações de escrita
  • Limitação: Sem tolerância a falhas

2 Nós:

  • Cálculo: (2/2) + 1 = 2
  • Resultado: Necessita de 2 nós para escrita
  • Crítica: Sem ganho real de tolerância a falhas
  • Se 1 nó falhar, operações de escrita são interrompidas

3 Nós:

  • Cálculo: (3/2) + 1 = 2
  • Resultado: Requer 2 nós para escrita
  • Benefício: Tolerância a falhas
  • Se 1 nó cair, 2 nós restantes garantem continuidade

4 Nós:

  • Cálculo: (4/2) + 1 = 3
  • Resultado: Necessita de 3 nós para escrita
  • Característica: Tolerância a falhas
  • Limitação: Perda de 2 nós compromete o cluster

5 Nós:

  • Cálculo: (5/2) + 1 = 3
  • Resultado: Requer 3 nós para escrita
  • Vantagem: Alta disponibilidade
  • Mesmo com 2 nós inoperantes, o cluster mantém funcionalidade

Recursos de estudo recomendados

Caso de uso – Recuperação de Snapshot

Para efetuar backup e restore do ETCD no Kubernetes, os 2 principais comandos envolvidos são estes:

# Fazer backup
ETCDCTL_API=3 etcdctl snapshot save snapshot.db

# Restaurar o snapshot
ETCDCTL_API=3 etcdctl snapshot restore snapshot.db

Porém, durante a realização dos procedimentos existem outros comandos importantes e mais alguns detalhes, que eu vou detalhar nos passos abaixo.

Pré-requisitos

Antes de começar, certifique-se de:

  • Ter acesso a um cluster Kubernetes
  • Ter instalado o etcdctl
  • Possuir permissões de administrador no cluster

Procedimento de Backup

1. Realizando backup do ETCD

# Definir versão da API do ETCD
export ETCDCTL_API=3

# Comando básico de backup
etcdctl snapshot save snapshot.db

# Backup com parâmetros de autenticação
etcdctl snapshot save /tmp/snapshot.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/etcd-server.crt \
  --key=/etc/kubernetes/pki/etcd/etcd-server.key

2. Verificando status do snapshot

etcdctl snapshot status snapshot.db

Procedimento de Restore

Passo a passo para Restauração:

1. Parar o kube-apiserver

service kube-apiserver stop

2. Restaurar o snapshot

etcdctl snapshot restore snapshot.db \
  --data-dir /var/lib/etcd-backup

3. Recarregar configurações do sistema

systemctl daemon-reload

4. Reiniciar o serviço etcd

service etcd restart

5. Iniciar o kube-apiserver

service kube-apiserver start

ETCD vs Outros armazenamentos

Comparando o ETCD com as principais soluções para armazenamento:

CaracterísticaETCDConsulZooKeeper
ConsistênciaForteForteEventual
PerformanceAltaMédiaMédia
EscalabilidadeAltaMédiaBaixa

Perguntas frequentes (FAQs)

Por que ETCD é importante no Kubernetes?

O ETCD armazena o estado completo do cluster, configurações e metadados, sendo essencial para a estabilidade e recuperação do ambiente.

Como proteger o ETCD?

Utilize TLS, configure corretamente os certificados e limite o acesso apenas a componentes autorizados.

Qual a frequência ideal de backup?

Recomendam-se backups periódicos, preferencialmente a cada mudança significativa no cluster.


Conclusão

Aprender mais sobre o ETCD não é apenas um requisito para a prova CKA, mas uma competência fundamental para profissionais que vão trabalhar com Kubernetes. Invista tempo praticando, explorando sua arquitetura e compreendendo seus mecanismos internos, efetuando simulações e testes em laboratório, antes de botar a mão na massa em produção ou aplicar os conhecimentos no exame CKA.

Próximos passos

📚 Explore mais conteúdos sobre Kubernetes.
🚀 Veja como instalar o Kubeadm no WSL2 para ajudar nos laboratórios e estudos para o CKA.

Boa sorte na sua prova CKA! 💪


Imagem de capa de gstudioimagen no Freepik

Compartilhe / Share
Fernando Müller Junior
Fernando Müller Junior

Eu sou o Fernando Müller, um Tech Lead SRE com 16 anos de experiência em TI, atualmente eu trabalho na Appmax, uma fintech localizada no Brasil. Apaixonado por trabalhar com arquiteturas e aplicações Cloud Native, ferramentas Open Source e tudo que existe no mundo SRE, sempre procurando se desenvolver e aprender constantemente(Lifelong learning), atuando em projetos inovadores!

Artigos: 44

Receba as notícias por email / Receive news by email

Insira seu endereço de e-mail abaixo e assine nossa newsletter / Enter your email address below and subscribe to our newsletter

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *