Crie instantâneos de volumes

Este documento explica como criar uma cópia, ou um instantâneo, de um volume de armazenamento num momento específico para a sua aplicação de contentor. Um instantâneo de volume permite-lhe repor um volume para um estado anterior ou aprovisionar um novo volume.

Este documento destina-se a programadores no grupo de operadores de aplicações, que são responsáveis pela criação de cargas de trabalho de aplicações para a respetiva organização. Para mais informações, consulte Públicos-alvo para a documentação isolada do GDC.

Antes de começar

Para concluir as tarefas neste documento, tem de pedir as autorizações necessárias e preparar o seu ambiente.

Peça funções do IAM

Tem de ter funções específicas para receber as autorizações de que precisa para criar instantâneos de volumes. As funções necessárias dependem de estar a trabalhar num cluster partilhado com âmbito da organização ou num cluster padrão com âmbito do projeto. Para mais informações, consulte o artigo Configurações de clusters do Kubernetes.

Funções de clusters partilhados

Para criar, eliminar, editar ou ver instantâneos de volumes num cluster partilhado, peça ao administrador do IAM do projeto para lhe conceder a função Administrador do espaço de nomes (namespace-admin). Esta função está associada ao espaço de nomes do projeto.

Funções de clusters padrão

Para criar, eliminar, editar ou ver instantâneos de volumes num cluster padrão, peça ao administrador do IAM do projeto para lhe conceder a função Programador de clusters (cluster-developer). Esta função está associada ao espaço de nomes do projeto.

Prepare o seu ambiente

Para executar comandos num cluster do Kubernetes através da API, certifique-se de que tem os seguintes recursos:

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

  • Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes.

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

Tire um instantâneo de volume

Para tirar um instantâneo de um objeto PersistentVolumeClaim, crie um objeto VolumeSnapshot. O sistema não garante a consistência dos dados. Pause a aplicação e sincronize os dados antes de tirar um instantâneo.

  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 o seguinte:

    • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig do cluster.

    • NAMESPACE: o espaço de nomes no qual criar o instantâneo de volume. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

    • VOLUME_SNAPSHOT_NAME: o nome do objeto VolumeSnapshot.

    • PVC_NAME: o nome da PVC para a qual está a criar um instantâneo.

  2. A operação de instantâneo está concluída quando o campo .status.readyToUse se torna true. Pode usar o seguinte comando para verificar o estado:

      kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \
        -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
    
  3. Atualize o manifesto da PVC com o instantâneo de volume especificado como uma origem 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 o seguinte:

    • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig do cluster.

    • NAMESPACE: o espaço de nomes no qual o recurso da PVC existe. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

    • PVC_NAME: o nome da PVC para a qual está a criar um instantâneo.

    • VOLUME_SNAPSHOT_NAME: o nome do instantâneo de volume.

O que se segue?