Como fazer o backup do etcd na última versão v1.31 (última)

Como fazer o backup do etcd na última versão v1.31 (última)

Resumo

  • Vamos criar um deployment
  • Fazer backup do etcd
  • Deletar o deployment
  • Verificar que não temos mais o deployment
  • Verificar se o snapshot de backup está ok
  • Restaurar o backup em um diretorio
  • Apontar o etcd para olhar esse diretório
  • Verificar se o deployment foi restaurado

Acesse: https://kubernetes.io/

Procure por: backup

Escolha

Acesse: https://github.com/etcd-io/etcd/releases

Execute os comandos informados na última versão

Confira a versão do etcd, etcdctl e etcdutl

Comandos para serem executados na instância do Control Plane

sudo su

ETCD_VER=v3.5.17
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

cd /tmp/etcd-download-test/

mv etcd* /usr/bin/

Aqui esta o arquivo para pegar os certificados que será usado nos próximos comandos esse é o diretorio mais importante

cd /etc/kubernetes/manifests
ll
nano etcd.yaml

Vamos salvar o snapshot com um nome

ETCDCTL_API=3 etcdctl --endpoints 127.0.0.1:2379 --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt snapshot save /tmp/snapshot-1.db

Antes de fazer o backup vamos criar recursos para depois deletarmos e fazermos o restore

kubectl create deployment andre --image nginx
kubectl get deploy

Conferir o status do snapshot e deletar o deployment para depois recuperarmos do backup

ETCDCTL_API=3 etcdutl snapshot status /tmp/snapshot-1.db --write-out=table
cd /tmp
ll
kubectl delete deployment andre
kubectl get deployment

Agora vamos restaurar o snapshot para uma pasta dentro de var/lib

ETCDCTL_API=3 etcdutl  --data-dir=/var/lib/etcd-backup-1 snapshot restore /tmp/snapshot-1.db

Aqui ta a pasta etcd e etcd-backup

cd /var/lib
ls

Aqui esta o arquivo para apontar para o backup

cd /etc/kubernetes/manifests/
nano etcd.yaml

Para reiniciarmos e fazermos as alterações vamos mover os arquivos para uma pasta temporaria e depois da alteração retorná-los

ll

cd /etc/kubernetes/manifests/

mkdir temp/

mv etcd.yaml  kube-apiserver.yaml  kube-controller-manager.yaml  kube-scheduler.yaml temp/

nano etcd.yaml

É isso que vou trocar nos 3 locais do arquivo manifest

/var/lib/etcd-backup-1

Vamos alterar onde ele faz os pontos de montagem de baixo pra cima (hostpath), (volume mount), (data-dir)

de: /var/lib/etcd para: /var/lib/etcd-backup-1

Retornando os arquivos

cd /etc/kubernetes/manifests/temp/
mv * ./..
cd ..
rmdir temp
ll

Verificando que o backup foi feito com sucesso

kubectl get deployment