Configurando instantâneos para File Storage for VPC
Nuvem privada virtual
File Storage for VPC os instantâneos de volume oferecem uma maneira padronizada de copiar o conteúdo de um volume em um determinado momento sem criar um volume totalmente novo. Os instantâneos são compatíveis com as classes de armazenamento baseadas em zona ( dp2 zonal) e regional (rfs). Para obter mais informações sobre instantâneos, consulte Como funcionam os instantâneos.
Para obter mais informações sobre o File Storage for VPC, consulte Sobre o File Storage for VPC.
O suporte a instantâneos para o File Storage for VPC complemento está atualmente em fase beta.
Se o PVC (compartilhamento de arquivos) for excluído, todos os instantâneos correspondentes pertencentes ao compartilhamento de arquivos serão excluídos. Nesse caso, os instantâneos de volume CSI permanecem, mas os instantâneos de back-end no
VPC não existirão. Portanto, você deve excluir volumes usando oc delete vs <snapshot-name>.
Pré-requisitos
- Certifique-se de ter o complemento File Storage for VPC instalado em seu cluster.
- Certifique-se de que você tenha Operador de instantâneo de ações permissões no IAM.
Criando um app
Crie um exemplo de Solicitação de Volume Persistente (PVC) e implemente um pod que referencie essa solicitação.
-
Verifique se o estado do complemento é
normale o status éReady.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName Version Health State Health Status vpc-file-csi-driver 2.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) -
Verifique se os pods do driver estão implementados e se o status é
Running.oc get pods -n kube-system | grep vpc-file-csiExemplo de saída
ibm-vpc-file-csi-controller-s34sw 7/7 Running 0 77s ibm-vpc-file-csi-controller-7hdhd 7/7 Running 0 77s ibm-vpc-file-csi-node-56c85 4/4 Running 0 77s ibm-vpc-file-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-file-csi-node-cmh2h 4/4 Running 0 77s -
Crie um PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-file-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: ibmc-vpc-file-min-iopsoc create -f pvc.yaml -
Verifique se a PVC foi criada e está em um estado
Bound.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 5 -
Crie um arquivo de configuração YAML para uma implementação que monte a PVC criada.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: csi-file-pvc # The name of the PVC you created earlieroc create -f pod.yaml -
Verifique se o pod está em execução no cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Agora que o pod foi criado, efetue login nele e crie um arquivo de texto a ser usado para a captura instantânea.
oc exec -it POD_NAME -- /bin/bashExemplos de comandos para criar um novo arquivo de texto.
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Criando uma captura instantânea do volume
Depois de criar uma implementação e um PVC, você pode criar os instantâneos de volume.
-
Certifique-se de que você tenha Operador de instantâneo de ações permissões no IAM.
-
Crie um instantâneo de volume em seu cluster usando a classe
ibmc-vpcfile-snapshot-deletede instantâneo que é implantada quando você habilita o complemento. Salve a seguinte configuraçãoVolumeSnapshotem um arquivo chamadosnapvol.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-file-pvc spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-delete source: persistentVolumeClaimName: csi-file-pvcoc create -f snapvol.yaml -
Verifique se o instantâneo está pronto para uso.
oc get volumesnapshotsExemplo de saída onde
READYTOUSEétrue.NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcfile-snapshot-delete true csi-file-pvc 10Gi ibmc-vpcfile-snapshot-delete snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Restaurando de uma captura instantânea do volume
Depois de implementar o instantâneo de volume, você pode restaurar os dados em um novo volume usando o instantâneo. A criação de um PVC provisiona dinamicamente um novo volume com dados de instantâneo.
-
Crie uma segunda PVC que referencie a captura instantânea do volume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: snapshot-csi-file-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gi -
Verifique se a PVC foi criada e está em um estado
Bound.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 9m16s restore-pvc Bound pvc-04dc8d6c-ac75-48b1-989d-ed67deb35911 10Gi RWM ibmc-vpc-file-min-iops <unset> 116s -
Crie um segundo arquivo de configuração YAML para uma implementação que monte a PVC criada.
apiVersion: apps/v1 kind: Deployment metadata: name: restore-pod labels: app: restore-pod spec: replicas: 1 selector: matchLabels: app: restore-pod template: metadata: labels: app: restore-pod spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for pvc from container name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-pvc # The name of the PVC that you created earlieroc create -f restore-pod.yaml -
Verifique se o pod foi criado.
oc get podsNAME READY STATUS RESTARTS AGE restore-pod-1 1/1 Running 0 30m pod-2 1/1 Running 0 46h -
Efetue login no pod recém-criado e verifique se o arquivo de texto de amostra criado anteriormente foi salvo no novo pod.
oc exec -it POD_NAME -- /bin/bash root@POD_NAME :/# cd myvolumepath/ root@POD_NAME :/myvolumepath# ls lost+found new.txt root@POD_NAME :/myvolumepath# cat new.txtExemplo de saída
hi
Restaurando instantâneos estáticos
Conclua as etapas a seguir para restaurar um instantâneo estático.
-
Obter instantâneo CRN usando
ibmcloud is share-snapshot <share-id> <share-snapshot-id> | grep CRNExemplo de saída
CRN crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f -
Crie um recurso
VolumeSnapshotContent. Salve a seguinte configuração como um arquivo chamadovolsnapcontent.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: static-file-snapshot-cnt spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain deletionPolicy: Retain driver: vpc.file.csi.ibm.io source: snapshotHandle: crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f # Enter the CRN of the snapshot you created earlier. For example crn:v1:public:is:us-south:a/8ee729d7f903db130b00257d91b6977f::snapshot:r134-64c3ad8e-786e-4f54-9b63-388615811ba6 volumeSnapshotRef: name: static-file-snapshot namespace: defaultoc apply -f volsnapcontent.yamlExemplo de saída
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Crie um VolumeSnapshot. Salve a seguinte configuração como um arquivo chamado volsnap.yaml.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: static-file-snapshot namespace: default spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain source: volumeSnapshotContentName: static-file-snapshot-cnt # Enter the name of the VolumeSnapshotContent that you created in the previous step.oc apply -f volsnap.yaml -
Crie um PVC. Salve a seguinte configuração como um arquivo chamado
pvc2.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-static-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: static-file-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gioc apply -f pvc2.yamlReimplante seu aplicativo.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-static-pvc # The name of the PVC you created earlieroc create -f dep2.yaml -
Verifique se o pod está em execução no cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Efetue login no pod recém-criado e verifique se o arquivo de texto de amostra criado anteriormente foi salvo no novo pod.
root@my-deployment-static-768f64ffcf-h6qft:/# cd myvolumepath/ root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# ls new.txt root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# cat new.txt hi
Desativando instantâneos
Por padrão, a funcionalidade de instantâneo é ativada ao usar o File Storage for VPC. Essa funcionalidade pode ser desativada no configmap addon-vpc-file-csi-driver-configmap no kube-system namespace, alterando o IsSnapshotEnabled para false. Observe que, com essa alteração no configmap, quaisquer instantâneos criados falharão com a mensagem CreateSnapshot functionality is disabled:
-
Salve o configmap atual do seu cluster na sua máquina local.
oc get cm -n kube-system addon-vpc-file-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Edite o parâmetro
IS_SNAPSHOT_ENABLEDparafalse.IS_SNAPSHOT_ENABLED:false -
Salve o arquivo e aplique suas alterações.
oc apply -f snapshotconfigmap.yaml