Fazer backup e restaurar clusters avançados com o gkectl

Este documento descreve como fazer backup e restaurar clusters de administrador e de usuário do Google Distributed Cloud versão 1.32 e mais recentes que tenham o cluster avançado ativado.

O processo de backup e restauração gkectl não inclui volumes persistentes. Todos os volumes criados pelo provisionador de volume local (LVP, na sigla em inglês) não são alterados.

Fazer backup de um cluster

O comando gkectl backup cluster adiciona as informações de cluster do armazenamento etcd e os certificados de PKI do cluster especificado a um arquivo tar. O armazenamento etcd é o armazenamento secundário do Kubernetes para todos os dados de cluster e contém todos os objetos do Kubernetes e objetos personalizados necessários para gerenciar o estado do cluster. Os certificados de PKI são usados para autenticação por Transport Layer Security (TLS). Esses dados são armazenados em backup a partir do plano de controle do cluster ou de um dos planos de controle para uma implantação de alta disponibilidade (HA).

O arquivo tar de backup contém credenciais confidenciais, incluindo as chaves da conta de serviço e a chave SSH. Armazene os arquivos de backup em um local seguro. Para evitar a exposição não intencional de arquivos, o processo de backup usa apenas arquivos na memória.

Faça backup dos clusters regularmente para garantir que os dados de snapshots sejam relativamente atuais. Ajuste a taxa de backups para refletir a frequência de alterações significativas nos clusters.

Antes de começar, verifique se o cluster está funcionando corretamente, com credenciais de trabalho e conectividade SSH para todos os nós. O objetivo do processo de backup é capturar o cluster em um estado válido conhecido para que você possa restaurar a operação em caso de falha catastrófica.

Para fazer backup de um cluster:

  1. Execute o seguinte comando para verificar o cluster:

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster que você planeja armazenar em backup.

    • ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador.

  2. Execute o comando aplicável para fazer backup do cluster:

    Cluster de administrador

    gkectl backup admin --kubeconfig ADMIN_KUBECONFIG
    

    Cluster de usuário

    gkectl backup cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

Por padrão, o arquivo tar de backup é salvo no diretório gkectl-workspace/backups na estação de trabalho do administrador. O arquivo tar é chamado de CLUSTER_NAME_backup_TIMESTAMP.tar.gz, em que CLUSTER_NAME é o nome do cluster que está sendo armazenado em backup e TIMESTAMP é a data e a hora em que o backup foi feito. Por exemplo, se o nome do cluster for testuser, o arquivo de backup terá um nome como testuser_backup_2006-01-02T150405Z0700.tar.gz. Para especificar um nome e local diferentes para o arquivo de backup, use a flag --backup-file.

O arquivo de backup expira após um ano e o processo de restauração do cluster não funciona com arquivos de backup expirados.

O arquivo de backup também pode ser enviado para o vCenter Server se a seção a seguir estiver configurada para o arquivo de configuração do cluster de administrador: clusterBackup:

datastore: DATASTORE

Substitua DATASTORE pelo armazenamento de dados em que você quer armazenar o backup. O armazenamento de dados precisa estar no mesmo data center que o cluster de administrador. Os backups estão localizados no diretório anthos/CLUSTER_NAME/backup do repositório de dados especificado.

Restaurar um cluster

A restauração de um cluster a partir de um backup é um último recurso e precisa ser usado quando um cluster falhar de forma catastrófica e não puder ser retornado de forma alguma. Por exemplo, se os dados do etcd estiverem corrompidos ou o pod do etcd estiver em um loop de falhas.

O arquivo tar de backup contém credenciais confidenciais, incluindo as chaves da conta de serviço e a chave SSH. Para evitar a exposição não intencional de arquivos, o processo de restauração do Google Distributed Cloud usa somente arquivos na memória.

Antes de restaurar um cluster, verifique se as seguintes condições são atendidas:

  • Garanta que todas as máquinas de nó do plano de controle que estavam disponíveis para o cluster no momento do backup estejam funcionando corretamente e acessíveis.
  • Garanta que a conectividade SSH entre os nós funcione com as chaves SSH usadas no momento do backup. Essas chaves SSH são restabelecidas como parte do processo de restauração.
  • Verifique se as chaves da conta de serviço que foram usadas no momento do backup ainda estão ativas. Essas chaves de conta de serviço são restabelecidas para o cluster restaurado.

Para restaurar um cluster:

  1. Execute o comando aplicável para restaurar o cluster:

    Cluster de administrador

    gkectl restore admin --backup-file BACKUP_FILE \
        --config ADMIN_CONFIG
    

    Substitua:

    • BACKUP_FILE: o caminho e o nome do arquivo de backup que você está usando.

    • ADMIN_CONFIG: o caminho até o arquivo de configuração do cluster de administrador.

    Cluster de usuário

    gkectl restore cluster --cluster-name CLUSTER_NAME \
        --backup-file BACKUP_FILE \
        --kubeconfig ADMIN_KUBECONFIG
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster que você está restaurando.

    • BACKUP_FILE: o caminho e o nome do arquivo de backup que você está usando.

    • ADMIN_KUBECONFIG: o caminho até o arquivo kubeconfig do cluster de administrador.

    No final do processo de restauração, um novo arquivo kubeconfig é gerado para o cluster restaurado no diretório do espaço de trabalho gkectl-workspace.

  2. Quando a restauração terminar, execute o comando a seguir para verificar se ela foi concluída:

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig GENERATED_KUBECONFIG
    

    Substitua GENERATED_KUBECONFIG pelo arquivo kubeconfig gerado.

Resolver problemas

Se você tiver problemas com o processo de backup ou restauração, as seções a seguir poderão ajudar a resolver o problema.

Se precisar de mais ajuda, entre em contato com a equipe do Cloud Customer Care.

Memória insuficiente durante um backup ou restauração

Se a estação de trabalho em que você executa o comando gkectl não tiver muita RAM, você pode ter memória insuficiente para executar o processo de backup ou restauração. Se necessário, crie e use um disco temporário para processar as operações de backup ou restauração usando o parâmetro --use-disk no comando de backup. Para preservar as permissões do arquivo, esse parâmetro modifica as permissões dos arquivos. Portanto, é necessário executar o comando como usuário raiz (ou usar sudo).

Atualização da chave SSH após um backup interromper o processo de restauração

As operações relacionadas ao SSH durante o processo de restauração podem falhar se a chave SSH for atualizada após a realização de um backup. Nesse caso, a nova chave SSH se torna inválida para o processo de restauração. Para resolver esse problema, adicione temporariamente a chave SSH original e execute a restauração. Após a conclusão do processo de restauração, é possível girar a chave SSH.