Snapshots mit dem Cluster-Add-on Block Storage for VPC einrichten
Virtual Private Cloud
Block Storage for VPC volume Snapshots bieten Ihnen eine standardisierte Möglichkeit, den Inhalt eines Volumes zu einem bestimmten Zeitpunkt zu kopieren, ohne ein komplett neues Volume zu erstellen. Weitere Informationen zu Snapshots finden Sie unter Wie Snapshots funktionieren. Weitere Informationen zu Block Storage for VPC finden Sie unter Informationen zu Block Storage for VPC.
Die Unterstützung für Momentaufnahmen ist für Clusterversion 1.25 und höher und mit dem Cluster-Add-on Block Storage for VPC Version 5.0 und höher verfügbar.
App erstellen
Erstellen Sie einen Beispiel-PVC (Persistent Volume Claim) und stellen Sie einen Pod bereit, der auf diesen Anspruch verweist.
-
Stellen Sie sicher, dass der Add-on-Status
normal
und der StatusReady
lautet.ibmcloud ks cluster addon ls --cluster CLUSTER-ID
Name Version Health State Health Status vpc-block-csi-driver 5.2 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.kubectl get pods -n kube-system | grep vpc-block-csi
Beispielausgabe
ibm-vpc-block-csi-controller-0 7/7 Running 0 77s ibm-vpc-block-csi-node-56c85 4/4 Running 0 77s ibm-vpc-block-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-block-csi-node-cmh2h 4/4 Running 0 77s
-
Erstellen Sie ein PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-vpc-block-5iops-tier
kubectl create -f pvc.yaml
-
Überprüfen Sie, ob der PVC erstellt wurde und sich im Status
Bound
befindet.kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE csi-block-pvc Bound pvc-0798b499-0b61-4f57-a184-4caeb7b9298d 10Gi RWO ibmc-vpc-block-5iops-tier 4m22s
-
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-block-pvc # The name of the PVC you created earlier
kubectl create -f pod.yaml
-
Überprüfen Sie, ob der Pod in Ihrem Cluster läuft.
kubectl get pods
NAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s
-
Nachdem Sie den Pod erstellt haben, melden Sie sich am Pod an und erstellen Sie eine Textdatei, die für die Momentaufnahme verwendet werden kann.
kubectl exec -it POD_NAME /bin/bash
Beispielausgabe
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Datenträgermomentaufnahme erstellen
Nachdem Sie eine Bereitstellung und einen PVC erstellt haben, können Sie die Ressourcen für Datenträgermomentaufnahmen erstellen.
Sie können Snapshots nur erstellen, wenn ein Datenträger einem Pod zugeordnet ist.
-
Erstellen Sie eine Ressource für Datenträgermomentaufnahmen in Ihrem Cluster unter Verwendung der Momentaufnahmenklasse
ibmc-vpcblock-snapshot
, die implementiert wird, wenn Sie das Add-on aktiviert haben. Speichern Sie die folgende VolumeSnapshot Konfiguration in einer Datei namenssnapvol.yaml
.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-block-pvc spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot source: persistentVolumeClaimName: csi-block-pvc
kubectl create -f snapvol.yaml
-
Stellen Sie sicher, dass die Momentaufnahme verwendet werden kann.
kubectl get volumesnapshots
Beispielausgabe, wobei
READYTOUSE
true
ist.NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcblock-snapshot true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Wiederherstellung aus einer Datenträgermomentaufnahme
Nach der Implementierung der Momentaufnahmenressourcen können Sie Daten mithilfe der Momentaufnahme auf einem neuen Datenträger wiederherstellen. Durch das dynamische Erstellen eines PVC wird ein neuer Datenträger mit Momentaufnahmedaten bereitgestellt.
-
Erstellen Sie einen zweiten PVC, der auf Ihre Datenträgermomentaufnahme verweist.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier dataSource: name: snapshot-csi-block-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
-
Überprüfen Sie, ob der PVC erstellt wurde und sich im Status
Bound
befindet.kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE restore-pvc Bound pvc-4ede7630-5a49-4bae-b34d-dc528acfb884 10Gi RWO ibmc-vpc-block-5iops-tier 18h
-
Erstellen Sie eine zweite YAML-Konfigurationsdatei für ein Deployment, das die von Ihnen erstellte PVC einbindet.
apiVersion: apps/v1 kind: Deployment metadata: name: podtwo labels: app: podtwo spec: replicas: 1 selector: matchLabels: app: podtwo template: metadata: labels: app: podtwo 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 earlier
kubectl create -f podtwo.yaml
-
Stellen Sie sicher, dass der Pod erstellt wurde.
kubectl get pods
NAME READY STATUS RESTARTS AGE POD_NAME 1/1 Running 0 30m POD2_NAME 1/1 Running 0 46h
-
Melden Sie sich bei dem neu erstellten Pod an und prüfen Sie, ob die zuvor erstellte Beispieltextdatei im neuen Pod gespeichert wurde.
kubectl 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.txt
Beispielausgabe
hi
Momentaufnahmen inaktivieren
Die Snapshotfunktionalität ist standardmäßig aktiviert, wenn die Block Storage for VPCverwendet wird. Diese Funktionalität kann in der Konfigurationszuordnung addon-vpc-block-csi-driver-configmap
im Namensbereich kube-system
inaktiviert werden, indem die IsSnapshotEnabled
in false
geändert wird. Beachten Sie, dass bei dieser Änderung in der Konfigurationszuordnung alle erstellten Momentaufnahmen mit der folgenden Nachricht fehlschlagen:CreateSnapshot functionality is disabled
.
-
Speichern Sie die aktuelle Konfigurationszuordnung Ihres Clusters auf Ihrer lokalen Maschine.
kubectl get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml
-
Bearbeiten Sie den Parameter
IsSnapshotEnabled
infalse
. -
Speichern Sie die Datei und übernehmen Sie Ihre Änderungen.
kubectl apply -f snapshotconfigmap.yaml
Nächste Schritte
Implementieren Sie den Webhook für Momentaufnahmevalidierung, um die Benutzereingabe zu validieren. Weitere Informationen finden Sie unter Webhook für Momentaufnahmevalidierung bereitstellen.
Fehlerbehebung für Momentaufnahmen
Lesen Sie die folgenden Themen zur Fehlerbehebung.