Criar snapshots de volume

Neste documento, explicamos como criar uma cópia, ou snapshot, de um volume de armazenamento em um momento específico para seu aplicativo contêiner. Com um snapshot de volume, é possível trazer um volume de volta a um estado anterior ou provisionar um novo volume.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos, que são responsáveis por criar cargas de trabalho de aplicativos para a organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, peça as permissões necessárias e prepare seu ambiente.

Solicitar papéis do IAM

Você precisa ter papéis específicos para receber as permissões necessárias para criar snapshots de volume. Os papéis necessários dependem de você estar trabalhando em um cluster compartilhado no escopo da organização ou em um cluster padrão no escopo do projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.

Funções de cluster compartilhadas

Para criar, excluir, editar ou visualizar snapshots de volume em um cluster compartilhado, peça ao administrador do IAM do projeto para conceder a você a função de Administrador de namespace (namespace-admin). Essa função está vinculada ao namespace do projeto.

Funções padrão do cluster

Para criar, excluir, editar ou visualizar snapshots de volume em um cluster padrão, peça ao administrador do IAM do projeto para conceder a você o papel de Desenvolvedor de cluster (cluster-developer). Essa função está vinculada ao namespace do projeto.

Preparar o ambiente

Para executar comandos em um cluster do Kubernetes usando a API, verifique se você tem os seguintes recursos:

  • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma.

  • Faça login e gere o arquivo kubeconfig do cluster do Kubernetes.

  • Use o caminho kubeconfig do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

Criar um snapshot de volume

Para criar um snapshot de um objeto PersistentVolumeClaim, crie um objeto VolumeSnapshot. O sistema não garante a consistência dos dados. Pause o aplicativo e limpe os dados antes de tirar um snapshot.

  1. Crie um recurso personalizado VolumeSnapshot:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: VOLUME_SNAPSHOT_NAME
    spec:
      source:
        persistentVolumeClaimName: PVC_NAME
    EOF
    

    Substitua:

    • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster.

    • NAMESPACE: o namespace em que o snapshot de volume será criado. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

    • VOLUME_SNAPSHOT_NAME: o nome do objeto VolumeSnapshot.

    • PVC_NAME: o nome do PVC para o qual você está criando um snapshot.

  2. A operação de snapshot é concluída quando o campo .status.readyToUse se torna true. Use o comando a seguir para verificar o status:

      kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \
        -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
    
  3. Atualize o manifesto do PVC com o snapshot de volume especificado como uma fonte de dados:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: PVC_NAME
    spec:
      dataSource:
        name: VOLUME_SNAPSHOT_NAME
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      storageClassName: standard-rwo
      accessModes:
        - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
    EOF
    

    Substitua:

    • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster.

    • NAMESPACE: o namespace em que o recurso PVC existe. Para clusters compartilhados, esse precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

    • PVC_NAME: o nome do PVC para o qual você está criando um snapshot.

    • VOLUME_SNAPSHOT_NAME: o nome do snapshot de volume.

A seguir