Einrichten von Snapshots für File Storage for VPC
Virtuelle private Cloud
File Storage for VPC Volume-Snapshots bieten Ihnen eine standardisierte Möglichkeit, den Inhalt eines Volumes zu einem bestimmten Zeitpunkt zu kopieren, ohne ein völlig neues Volume zu erstellen. Snapshots werden sowohl für zonal( dp2 )- als auch für regional (rfs)-basierte Speicherklassen unterstützt. Weitere Informationen zu Snapshots finden Sie unter So funktionieren Snapshots.
Weitere Informationen zu File Storage for VPC finden Sie unter Informationen zu File Storage for VPC.
Die Unterstützung von Snapshots für das File Storage for VPC Add-on befindet sich derzeit in der Beta-Phase.
Wenn die PVC (Dateifreigabe) gelöscht wird, werden alle zugehörigen Snapshots, die sich im Besitz der Dateifreigabe befinden, gelöscht. In diesem Fall bleiben die CSI-Volume-Snapshots erhalten, aber die Backend-Snapshots in VPC existieren nicht
mehr. Daher müssen Sie Volumes mit Hilfe von oc delete vs <snapshot-name> löschen.
Voraussetzungen
- Vergewissern Sie sich, dass Sie das Add-on File Storage for VPC in Ihrem Cluster installiert haben.
- Stellen Sie sicher, dass Sie Aktie Snapshot Operator berechtigungen in IAM haben.
App erstellen
Erstellen Sie ein Beispiel für einen Persistent Volume Claim (PVC) und stellen Sie einen Pod bereit, der auf diesen Claim verweist.
-
Überprüfen Sie, ob der Add-on-Status und der Status
normalistReady.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) -
Überprüfen Sie, dass die Treiber-Pods bereitgestellt sind und ihr Status
Running(aktiv) lautet.oc get pods -n kube-system | grep vpc-file-csiBeispielausgabe
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 -
Erstellen Sie ein 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 -
Überprüfen Sie, ob das PVC erstellt wurde und sich in einem
BoundZustand befindet.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 -
Erstellen Sie eine YAML-Konfigurationsdatei für eine Bereitstellung, die die von Ihnen erstellte PVC einbindet.
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 -
Überprüfen Sie, ob der Pod in Ihrem Cluster läuft.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Nachdem Sie den Pod erstellt haben, melden Sie sich beim Pod an und erstellen Sie eine Textdatei, die für den Snapshot verwendet werden soll.
oc exec -it POD_NAME -- /bin/bashBeispielbefehle zum Erstellen einer neuen Textdatei.
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Erstellen eines Volume-Snapshots
Nachdem Sie eine Bereitstellung und ein PVC erstellt haben, können Sie die Volume-Snapshots erstellen.
-
Stellen Sie sicher, dass Sie Aktie Snapshot Operator berechtigungen in IAM haben.
-
Erstellen Sie einen Volume-Snapshot in Ihrem Cluster, indem Sie die
ibmc-vpcfile-snapshot-deleteSnapshot-Klasse verwenden, die bereitgestellt wird, wenn Sie das Add-on aktivieren. Speichern Sie die folgendeVolumeSnapshotKonfiguration in einer Datei namenssnapvol.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 -
Überprüfen Sie, ob der Snapshot einsatzbereit ist.
oc get volumesnapshotsBeispielausgabe, wobei
READYTOUSEisttrue.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
Wiederherstellung aus einem Volume-Snapshot
Nachdem Sie den Volume-Snapshot bereitgestellt haben, können Sie Daten mithilfe des Snapshots auf einem neuen Volume wiederherstellen. Durch das Erstellen eines PVC wird dynamisch ein neues Volume mit Snapshot-Daten bereitgestellt.
-
Erstellen Sie ein zweites PVC, das auf Ihren Volume-Snapshot verweist.
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 -
Überprüfen Sie, ob das PVC erstellt wurde und sich in einem
BoundZustand befindet.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 -
Erstellen Sie eine zweite YAML-Konfigurationsdatei für ein Deployment, das die von Ihnen erstellte PVC einbindet.
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 -
Stellen Sie sicher, dass der Pod erstellt wurde.
oc get podsNAME READY STATUS RESTARTS AGE restore-pod-1 1/1 Running 0 30m pod-2 1/1 Running 0 46h -
Melden Sie sich bei dem neu erstellten Pod an und überprüfen Sie, ob die zuvor erstellte Beispieltextdatei im neuen Pod gespeichert ist.
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.txtBeispielausgabe
hi
Wiederherstellung statischer Snapshots
Führen Sie die folgenden Schritte aus, um einen statischen Snapshot wiederherzustellen.
-
Momentaufnahme CRN abrufen mit
ibmcloud is share-snapshot <share-id> <share-snapshot-id> | grep CRNBeispielausgabe
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 -
Erstellen Sie eine Ressource
VolumeSnapshotContent. Speichern Sie die folgende Konfiguration als Datei mit dem Namenvolsnapcontent.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.yamlBeispielausgabe
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Erstellen Sie eine VolumeSnapshot. Speichern Sie die folgende Konfiguration als Datei mit dem Namen 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 -
Erstellen Sie ein PVC. Speichern Sie die folgende Konfiguration als Datei mit dem Namen
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.yamlStellen Sie Ihre App erneut bereit.
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 -
Überprüfen Sie, ob der Pod in Ihrem Cluster läuft.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Melden Sie sich bei dem neu erstellten Pod an und überprüfen Sie, ob die zuvor erstellte Beispieltextdatei im neuen Pod gespeichert ist.
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
Schnappschüsse deaktivieren
Standardmäßig ist die Snapshot-Funktion bei Verwendung der File Storage for VPC. Diese Funktion kann in der Konfigurationszuordnung addon-vpc-file-csi-driver-configmap im kube-system Namespace deaktiviert werden, indem
man den Wert IsSnapshotEnabled von in ändert false. Beachten Sie, dass mit dieser Änderung in der Konfigurationszuordnung alle erstellten Snapshots mit der folgenden CreateSnapshot functionality is disabled Meldung fehlschlagen:
-
Speichern Sie die aktuelle Konfigurationskarte aus Ihrem Cluster auf Ihrem lokalen Rechner.
oc get cm -n kube-system addon-vpc-file-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Ändern Sie den Parameter
IS_SNAPSHOT_ENABLEDinfalse.IS_SNAPSHOT_ENABLED:false -
Speichern Sie die Datei und übernehmen Sie Ihre Änderungen.
oc apply -f snapshotconfigmap.yaml