Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Container Storage es un servicio de administración, implementación y orquestación de volúmenes basado en la nube y creado de forma nativa para contenedores. En este artículo se muestra cómo tomar una instantánea a un momento dado de un volumen persistente y restaurarla con una nueva notificación de volumen persistente.
Requisitos previos
- En este artículo, se necesita la versión más reciente de la CLI de Azure (2.35.0 o posterior). Consulte Cómo instalar la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente. Si tiene previsto ejecutar los comandos localmente en lugar de en Azure Cloud Shell, asegúrese de ejecutarlos con privilegios administrativos.
- Necesitará un clúster Azure Kubernetes Service (AKS) con un grupo de nodos de al menos tres máquinas viruales (VM) de para los nodos de clúster, cada una con un mínimo de cuatro CPU virtuales (vCPU).
- En este artículo, se supone que ya ha instalado Azure Container Storage en el clúster de AKS y que ha creado un grupo de almacenamiento y una notificación de volumen persistente (PVC) mediante Azure Disks o un disco efímero (almacenamiento local). Las instantáneas de volumen no se admiten actualmente cuando se usa Elastic SAN como almacenamiento de respaldo.
Creación de una clase de instantánea de volumen
En primer lugar, cree una clase de instantánea de volumen, que le permite especificar los atributos de la instantánea de volumen, definiéndola en un archivo de manifiesto YAML. Siga estos pasos para crear una clase de instantánea de volumen para Azure Disks.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-volumesnapshotclass.yaml
.Pegue el código siguiente. El valor del nombre de la clase de instantánea de volumen puede ser el que quiera.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-acstor-vsc driver: containerstorage.csi.azure.com deletionPolicy: Delete parameters: incremental: "true" # available values: "true", "false" ("true" by default for Azure Public Cloud, and "false" by default for Azure Stack Cloud)
Aplique el archivo de manifiesto de YAML para crear una clase de instantánea de volumen.
kubectl apply -f acstor-volumesnapshotclass.yaml
Una vez completada la creación, verá un mensaje como el siguiente:
volumesnapshotclass.snapshot.storage.k8s.io/csi-acstor-vsc created
También puede ejecutar
kubectl get volumesnapshotclass
para comprobar si se ha creado la clase de instantánea de volumen. La salida debería ser la siguiente:NAME DRIVER DELETIONPOLICY AGE csi-acstor-vsc containerstorage.csi.azure.com Delete 11s
Creación de una instantánea de volumen
A continuación, creará una instantánea de una notificación de volumen persistente que ya exista y aplicará la clase de instantánea de volumen que creó en el paso anterior.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-volumesnapshot.yaml
.Pegue el código siguiente.
volumeSnapshotClassName
debe ser el nombre de la clase de instantánea de volumen que creó en el paso anterior. ParapersistentVolumeClaimName
, use el nombre de la notificación de volumen persistente de la que desea tomar una instantánea. El valor del nombre de la clase de instantánea de volumen puede ser el que quiera.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: azuredisk-volume-snapshot spec: volumeSnapshotClassName: csi-acstor-vsc source: persistentVolumeClaimName: azurediskpvc
Aplique el archivo de manifiesto de YAML para crear una clase de instantánea de volumen.
kubectl apply -f acstor-volumesnapshot.yaml
Una vez completada la creación, verá un mensaje como el siguiente:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
También puede ejecutar
kubectl get volumesnapshot
para comprobar si se ha creado la clase de instantánea de volumen. CuandoREADYTOUSE
indique true, puede avanzar al paso siguiente.
Creación de una notificación de volumen persistente restaurada
Ahora puede crear una nueva notificación de volumen persistente que use la instantánea de volumen como origen de datos.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-pvc-restored.yaml
.Pegue el código siguiente.
storageClassName
debe coincidir con la clase de almacenamiento que usó al crear el volumen persistente original. Por ejemplo, si usa un disco efímero (NVMe local) en lugar de Discos de Azure para el almacenamiento back-end, cambiestorageClassName
aacstor-ephemeraldisk
. Para el valor del nombre del origen de datos, use el nombre de la instantánea de volumen que creó en el paso anterior. El valor del nombre de metadatos de la notificación de volumen persistente puede ser lo que quiera.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk-snapshot-restored spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk resources: requests: storage: 100Gi dataSource: name: azuredisk-volume-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
Aplique el archivo de manifiesto YAML para crear la PVC.
kubectl apply -f acstor-pvc-restored.yaml
Una vez completada la creación, verá un mensaje como el siguiente:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
También puede ejecutar
kubectl describe pvc pvc-azuredisk-snapshot-restored
para comprobar si se ha creado el volumen persistente. Debe ver el estado Pendiente y el mensaje esperando a que se cree el primer consumidor antes del enlace.
Sugerencia
Si ya ha creado una notificación de volumen persistente restaurada y desea volver a aplicar el archivo yaml para corregir un error o realizar un cambio, primero deberá eliminar la antigua notificación de volumen persistente antes de volver a aplicar el archivo yaml: kubectl delete pvc <pvc-name>
.
Eliminación del pod original (opcional)
Antes de crear un pod, es posible que deba eliminar el pod original desde el que creó la instantánea.
- Ejecute
kubectl get pods
para enumerar los pods. Asegúrese de eliminar el pod correcto. - Para eliminar el pod, ejecute
kubectl delete pod <pod-name>
.
Creación de un pod con la instantánea restaurada
Luego, cree un nuevo pod mediante la notificación de volumen persistente restaurada. Cree un pod mediante Fio (evaluador de E/S flexible) para realizar pruebas comparativas y simulación de carga de trabajo y especifique una ruta de montaje para el volumen persistente.
Use su editor de texto favorito para crear un archivo de manifiesto YAML, como
code acstor-pod2.yaml
.Pegue el código siguiente. La notificación
claimName
de volumen persistente debe ser el nombre de la notificación de volumen persistente de la instantánea restaurada que creó. El valor del nombre de metadatos para el pod puede ser lo que quiera.kind: Pod apiVersion: v1 metadata: name: fiopod2 spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: diskpv persistentVolumeClaim: claimName: pvc-azuredisk-snapshot-restored containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: diskpv
Aplique el archivo de manifiesto YAML para implementar el pod.
kubectl apply -f acstor-pod2.yaml
Debería ver un resultado similar al siguiente:
pod/fiopod2 created
Compruebe que el pod se está ejecutando y que la notificación de volumen persistente se ha enlazado correctamente al pod:
kubectl describe pod fiopod2 kubectl describe pvc pvc-azuredisk-snapshot-restored
Compruebe las pruebas FIO para ver su estado actual:
kubectl exec -it fiopod2 -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Ahora ha implementado un nuevo pod desde la notificación de volumen persistente restaurada y puede usarla para las cargas de trabajo de Kubernetes.