Neste documento, explicamos como criar uma cópia, ou snapshot, de um volume de armazenamento em um momento específico para seu aplicativo de 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 isolada do GDC.
Antes de começar
Para concluir as tarefas neste documento, você precisa dos seguintes recursos e papéis:
Para executar comandos em um cluster do Kubernetes, 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 para o cluster do Kubernetes se você não tiver um.
Use o caminho kubeconfig do cluster do Kubernetes para substituir
KUBERNETES_CLUSTER_KUBECONFIGnestas instruções.
Para receber as permissões necessárias para gerenciar snapshots de volume em um cluster compartilhado, peça ao administrador do IAM da organização para conceder a você o papel de administrador do namespace (
namespace-admin) no namespace do projeto.Para receber as permissões necessárias para gerenciar snapshots de volume em um cluster padrão, peça ao administrador do IAM da organização para conceder a você o papel de desenvolvedor de cluster (
cluster-developer) em um cluster padrão.
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 instantâneo.
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 EOFSubstitua:
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 objetoVolumeSnapshot.PVC_NAME: o nome do PVC para o qual você está criando um snapshot.
A operação de snapshot será concluída quando o campo
.status.readyToUsese tornartrue. 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'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 EOFSubstitua:
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
- Visão geral das cargas de trabalho de contêiner
- Criar cargas de trabalho com estado
- Acessar o armazenamento permanente