Leer en inglés

Compartir a través de


Uso de instantáneas de volumen con Azure Container Storage

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 posteriores). 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.

  1. Use su editor de texto favorito para crear un archivo de manifiesto YAML, como code acstor-volumesnapshotclass.yaml.

  2. Pegue el código siguiente. El valor del nombre de la clase de instantánea de volumen puede ser el que quiera.

    yml
    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)
    
  3. Aplique el archivo de manifiesto de YAML para crear una clase de instantánea de volumen.

    Azure CLI
    kubectl apply -f acstor-volumesnapshotclass.yaml
    

    Una vez completada la creación , verá un mensaje como el siguiente:

    Output
    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:

    Output
    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.

  1. Use su editor de texto favorito para crear un archivo de manifiesto YAML, como code acstor-volumesnapshot.yaml.

  2. Pegue el código siguiente. volumeSnapshotClassName debe ser el nombre de la clase de instantánea de volumen que creó en el paso anterior. Para persistentVolumeClaimName, 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.

    yml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: azuredisk-volume-snapshot
    spec:
      volumeSnapshotClassName: csi-acstor-vsc
      source:
        persistentVolumeClaimName: azurediskpvc
    
  3. Aplique el archivo de manifiesto de YAML para crear una clase de instantánea de volumen.

    Azure CLI
    kubectl apply -f acstor-volumesnapshot.yaml
    

    Una vez completada la creación , verá un mensaje como el siguiente:

    Output
    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. Cuando READYTOUSE 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.

  1. Use su editor de texto favorito para crear un archivo de manifiesto YAML, como code acstor-pvc-restored.yaml.

  2. 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, cambie storageClassName a acstor-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.

    yml
    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
    
  3. Aplique el archivo de manifiesto YAML para crear la PVC.

    Azure CLI
    kubectl apply -f acstor-pvc-restored.yaml
    

    Una vez completada la creación , verá un mensaje como el siguiente:

    Output
    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.

  1. Ejecute kubectl get pods para enumerar los pods. Asegúrese de eliminar el pod correcto.
  2. 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.

  1. Use su editor de texto favorito para crear un archivo de manifiesto YAML, como code acstor-pod2.yaml.

  2. 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.

    yml
    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
    
  3. Aplique el archivo de manifiesto YAML para implementar el pod.

    Azure CLI
    kubectl apply -f acstor-pod2.yaml
    

    Debería ver un resultado similar al siguiente:

    Output
    pod/fiopod2 created
    
  4. Compruebe que el pod se está ejecutando y que la notificación de volumen persistente se ha enlazado correctamente al pod:

    Azure CLI
    kubectl describe pod fiopod2
    kubectl describe pvc pvc-azuredisk-snapshot-restored
    
  5. Compruebe las pruebas FIO para ver su estado actual:

    Azure CLI
    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.

Consulte también