DevOps Mind
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.
Tópicos
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.
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:
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:
- Backup e Recuperação(Esse é um dos temas mais cobrados)
- Comandos
etcdctl snapshot save
- Procedimentos de restauração de cluster
- 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.
- 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:
- O cálculo do quorum em sistemas distribuídos segue a fórmula
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ística | ETCD | Consul | ZooKeeper |
---|---|---|---|
Consistência | Forte | Forte | Eventual |
Performance | Alta | Média | Média |
Escalabilidade | Alta | Média | Baixa |
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! 💪