Para fazer backup e restaurar cargas de trabalho em execução em clusters TKG 2 em Supervisor, crie um repositório de dados e instale o Velero com Restic no cluster Kubernetes.
Visão geral
Os clusters do TKG 2 são executados em nós de máquina virtual. Para fazer backup e restaurar cargas de trabalho de cluster do TKG 2, instale o Velero e o Restic no cluster.
Pré-requisitos
Certifique-se de que seu ambiente atenda aos seguintes pré-requisitos para instalar o Velero e o Restic para fazer backup e restaurar cargas de trabalho em execução em clusters
Tanzu Kubernetes.
- Uma VM Linux com armazenamento suficiente para armazenar vários backups de carga de trabalho. Você instalará o MinIO nesta VM.
- Uma VM Linux em que o Kubernetes CLI Tools for vSphere está instalado, incluindo o vSphere Plugin for kubectl e o kubectl. Você instalará a CLI do Velero nesta VM cliente. Se você não tiver uma VM desse tipo, poderá instalar a CLI do Velero localmente, mas deverá ajustar as etapas de instalação adequadamente.
- O ambiente Kubernetes tem acesso à Internet e pode ser acessado pela VM cliente.
Instalar e configurar o repositório de objetos do MinIO
O Velero requer um repositório de objetos compatível com S3 como destino para backups de carga de trabalho do Kubernetes. O Velero oferece suporte a vários desses
provedores de armazenamento de objetos. Para simplificar, estas instruções usam o
MinIO, um serviço de armazenamento compatível com S3 que é executado localmente na VM de armazenamento de objeto.
- Instale o MinIO.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- Conceda permissões de execução ao MinIO.
chmod +x minio
- Crie um diretório no sistema de arquivos para o MinIO.
mkdir /DATA-MINIO
- Inicie o servidor MinIO.
./minio server /DATA-MINIO
- Depois que o servidor MinIO for iniciado, você receberá detalhes importantes da instância do armazenamento de dados, incluindo a URL do Endpoint, a AccessKey e a SecretKey. Registre a URL do Endpoint, a AccessKey e a SecretKey na tabela.
Metadados do repositório de dados Valor URL do endpoint Chave de Acesso Chave Secreta - Navegue até o repositório de dados do MinIO abrindo um navegador para a URL do endpoint do servidor MinIO.
- Faça login no servidor MinIO e forneça a AccessKey e a SecretKey.
- Para habilitar o MinIO como um serviço, configure o MinIO para inicialização automática fazendo download do script
minio.service
.curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- Edite o script
minio.service
e adicione o seguinte valor paraExecStart
.ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- Salve o script revisado.
- Configure o serviço MinIO executando os comandos a seguir.
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- Crie um bucket do MinIO para backup e restauração iniciando o navegador MinIO e fazendo login no repositório de objetos.
- Clique no ícone Criar Bucket.
- Digite o nome do bucket, por exemplo:
my-cluster-backups
. - Verifique se o bucket foi criado.
- Por padrão, um novo bucket do MinIO é somente leitura. Para backup e restauração autônomos do Velero, o bucket do MinIO deve ser de leitura/gravação. Para definir o bucket para leitura/gravação, selecione o bucket e clique no link de elipses (pontos).
- Selecione Editar política (Edit Policy).
- Altere a política para Leitura e gravação (Read and Write).
- Clique em Adicionar (Add).
- Para fechar a caixa de diálogo, clique no X.
Instalar a CLI do Velero
Instale a CLI do Velero no cliente de VM ou em sua máquina local.
- Baixe a versão compatível do binário Velero assinado para vSphere with Tanzu na página de downloads do produto VMware.
Observação: Você deve usar o binário do Velero assinado por VMware para se qualificar para o suporte de VMware.
- Abra uma linha de comando e altere o diretório para o download da CLI do Velero.
- Descompacte o arquivo baixado. Por exemplo:
gunzip velero-linux-vX.X.X_vmware.1.gz
- Verifique o binário do Velero.
ls -l
- Conceda permissões de execução à CLI do Velero.
chmod +x velero-linux-vX.X.X_vmware.1
- Disponibilize globalmente a CLI do Velero movendo-a para o caminho do sistema:
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- Verifique a instalação.
velero version
Instalar o Velero e o Restic no cluster Tanzu Kubernetes
O contexto da CLI do Velero seguirá automaticamente o contexto do kubectl. Antes de executar comandos da CLI do Velero para instalar o Velero e o Restic no cluster de destino, defina o contexto kubectl.
- Recupere o nome do bucket do MinIO. Por exemplo,
my-cluster-backups
. - Obtenha a AccessKey e a SecretKey para o bucket do MinIO.
- Defina o contexto para o cluster Kubernetes de destino para que a CLI do Velero saiba em qual cluster trabalhar.
kubectl config use-context tkgs-cluster-name
- Crie um arquivo de segredos chamado
credentials-minio
. Atualize o arquivo com as credenciais de acesso do servidor MinIO que você coletou. Por exemplo:aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
Observação: Se você receber uma mensagem de erro "Erro ao obter um repositório de backup" com a descrição "NoCredentialProviders: nenhum provedor válido na cadeia", inclua a linha[default]
no início do arquivo de credenciais. Por exemplo:[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- Salve o arquivo e verifique se o arquivo está no lugar.
ls
- Execute o seguinte comando para instalar o Velero e o Restic no cluster Kubernetes de destino. Substitua ambas as URLs pela URL da sua instância do MinIO.
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket tkgs-velero \ --secret-file ./credentials-minio \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config \ region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
- Verifique a instalação do Velero e do Restic.
kubectl logs deployment/velero -n velero
- Verifique o namespace
velero
.kubectl get ns
- Verifique os pods
velero
erestic
.kubectl get all -n velero
Solucionar problemas do Restic DaemonSet (se necessário)
Para executar o Restic DaemonSet de três pods em um cluster Kubernetes, talvez seja necessário atualizar a especificação do Restic DaemonSet e modificar o arquivo hostPath. Para obter mais informações sobre esse problema, consulte
Integração do Restic na documentação do Velero.
- Verifique o Restic DaemonSet de três pods.
kubectl get pod -n velero
Se os pods estiverem com o status CrashLoopBackOff, edite-os da seguinte maneira.
- Execute o comando
edit
.kubectl edit daemonset restic -n velero
- Altere hostPath de
/var/lib/kubelet/pods
para/var/vcap/data/kubelet/pods
.- hostPath: path: /var/vcap/data/kubelet/pods
- Salve o arquivo.
- Verifique o Restic DaemonSet de três pods.
kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE restic-5jln8 1/1 Running 0 73s restic-bpvtq 1/1 Running 0 73s restic-vg8j7 1/1 Running 0 73s velero-72c84322d9-le7bd 1/1 Running 0 10m
Ajustar os limites de memória do Velero (se necessário)
Se o backup do Velero retornar
status=InProgress
por muitas horas, aumente os limites e solicite configurações de memória.
- Execute o seguinte comando.
kubectl edit deployment/velero -n velero
- Altere os limites e solicite as configurações de memória do padrão de
256Mi
e128Mi
para512Mi
e256Mi
.ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File