Snapshots mit dem Cluster-Add-on Block Storage for VPC einrichten
Virtuelle 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 völlig 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.
Standardmäßig erstellt das Block Storage for VPC cluster add-on Volumes und Snapshots in derselben VPC-Ressourcengruppe, in der der Cluster bereitgestellt wird. Ab der Add-on-Version 5.2.46 und später können Sie jedoch Snapshots in einer anderen
Ressourcengruppe erstellen, indem Sie den Parameter resourceGroup in Ihrem VolumeSnapshotClass angeben. Weitere Informationen finden Sie unter Erstellen von Snapshots in einer anderen Ressourcengruppe.
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
normalund der StatusReadylautet.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName 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.oc get pods -n kube-system | grep vpc-block-csiBeispielausgabe
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-tieroc create -f pvc.yaml -
Überprüfen Sie, ob der PVC erstellt wurde und sich im Status
Boundbefindet.oc get pvcNAME 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 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 am Pod an und erstellen Sie eine Textdatei, die für die Momentaufnahme verwendet werden kann.
oc exec -it POD_NAME /bin/bashBeispielausgabe
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 Volume an einen Pod angeschlossen ist.
-
Vergewissern Sie sich, dass Sie in IAM über die Berechtigung Share Snapshot Operator verfügen.
-
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 folgendeVolumeSnapshotKonfiguration 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-pvcoc create -f snapvol.yaml -
Stellen Sie sicher, dass die Momentaufnahme verwendet werden kann.
oc get volumesnapshotsBeispiel für eine Ausgabe, bei der
READYTOUSEtrueist:NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE snapshot-csi-block-pvc true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Erstellen von Snapshots in einer anderen Ressourcengruppe
Ab Block Storage for VPC cluster add-on Version 5.2.46 und höher können Sie Volume-Snapshots in einer Ressourcengruppe erstellen, die sich von der Ressourcengruppe Ihres Clusters unterscheidet. Diese Funktion bietet mehr Flexibilität bei der Organisation von Ressourcen, der Verwaltung von Kontingenten und der Zugriffskontrolle.
- Versionsvoraussetzung: Diese Funktion wird nur in der Add-on-Version 5.2.46 und höher unterstützt.
- Standardverhalten: Wenn Sie keinen Parameter
resourceGroupoder eine leere Zeichenfolge angeben, werden Snapshots in der Ressourcengruppe des Clusters erstellt.
Voraussetzungen
Bevor Sie beginnen, vergewissern Sie sich, dass Sie über die folgenden Berechtigungen in IAM verfügen:
- VPC Infrastruktur Dienstleistungen (is): Redakteurin und Autorin
- Kubernetes Service (container-kubernetes): Operator
- Ressourcengruppe: Viewer für jede Ressourcengruppe, in der Sie Snapshots erstellen möchten
Erstellen einer benutzerdefinierten VolumeSnapshotClass
Um Snapshots in einer anderen Ressourcengruppe zu erstellen, müssen Sie eine benutzerdefinierte VolumeSnapshotClass erstellen, die die ID der Zielressourcengruppe angibt.
-
Ermitteln Sie die ID der Ressourcengruppe, in der Sie den Snapshot erstellen möchten.
ibmcloud resource groups -
Erstellen Sie eine
VolumeSnapshotClassKonfigurationsdatei. Speichern Sie die folgende YAML in einer Datei namensvpc-snap-custom-rg.yaml. Ersetzen Sie<RESOURCE_GROUP_ID>durch Ihre Ziel-Ressourcengruppen-ID.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: vpc-snap-custom-rg driver: vpc.block.csi.ibm.io deletionPolicy: Delete parameters: resourceGroup: <RESOURCE_GROUP_ID>Der Parameter
resourceGroupmuss die ID der Ressourcengruppe sein, nicht der Name der Ressourcengruppe. -
Erstellen Sie die
VolumeSnapshotClassin Ihrem Cluster.oc create -f vpc-snap-custom-rg.yaml -
Überprüfen Sie, ob die Website
VolumeSnapshotClasserstellt wurde.oc get volumesnapshotclass
Erstellen eines Schnappschusses mit einer benutzerdefinierten Ressourcengruppe
Nachdem Sie die benutzerdefinierte VolumeSnapshotClass erstellt haben, können Sie Snapshots erstellen, die auf sie verweisen.
-
Erstellen Sie eine
VolumeSnapshotKonfigurationsdatei, die auf Ihre eigene Snapshot-Klasse verweist. Speichern Sie die folgende YAML in einer Datei namenssnapshot-custom-rg.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-custom-rg spec: volumeSnapshotClassName: vpc-snap-custom-rg source: persistentVolumeClaimName: csi-block-pvc -
Erstellen Sie den Snapshot.
oc create -f snapshot-custom-rg.yaml -
Stellen Sie sicher, dass die Momentaufnahme verwendet werden kann.
oc get volumesnapshots -
Überprüfen Sie, ob der Snapshot in der Zielressourcengruppe erstellt wurde, indem Sie die IBM Cloud CLI verwenden.
ibmcloud target -g <RESOURCE_GROUP_NAME> ibmcloud is snapshots
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
Boundbefindet.oc get pvcNAME 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 earlieroc create -f podtwo.yaml -
Stellen Sie sicher, dass der Pod erstellt wurde.
oc get podsNAME 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.
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
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.
oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Bearbeiten Sie den Parameter
IsSnapshotEnabledinfalse. -
Speichern Sie die Datei und übernehmen Sie Ihre Änderungen.
oc 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.