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