Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Uso de un PV local a través de un PV dinámico

Requisitos previos

  • Ha creado un clúster e instalado el complemento de CSI (everest) en el clúster.
  • Si desea crear un clúster mediante comandos, utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  • Ha importado un disco de datos de un nodo al grupo de almacenamiento de PV local. Para obtener más información, véase Grupos de almacenamiento.

Restricciones

  • Los PV locales solo se admiten cuando la versión del clúster es v1.21.2-r0 o posterior y la versión adicional más reciente es 2.1.23 o posterior. Se recomienda 2.1.23 o posterior.
  • Quitar, eliminar, restablecer o ajustar en un nodo hará que se pierdan los datos de PVC/PV del PV local asociado con el nodo, que no se pueden restaurar o usar de nuevo. Para obtener más información, consulte Quitar un nodo, Eliminar un nodo, Restablecer un nodo y Ajustar un nodo. En estos escenarios, el pod que utiliza el PV local es desalojado del nodo. Se creará un nuevo pod y permanecerá en el estado pendiente. Esto se debe a que el PVC utilizado por el pod tiene una etiqueta de nodo, debido a lo cual el pod no se puede programar. Después de que se restablezca el nodo, el pod puede planificarse para el nodo de reinicio. En este caso, el pod permanece en el estado de creación porque el volumen lógico subyacente correspondiente al PVC no existe.
  • No elimine manualmente el grupo de almacenamiento correspondiente ni desconecte los discos de datos del nodo. De lo contrario, pueden producirse excepciones como la pérdida de datos.
  • Un PV local no se puede montar en múltiples cargas de trabajo o trabajos al mismo tiempo.

Creación automática de un PV local en la consola

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster.
  2. Cree dinámicamente un PVC y un PV.

    1. Elija Storage en el panel de navegación y haga clic en la ficha PersistentVolumeClaims (PVCs). Haga clic en Create PVC en la esquina superior derecha. En el cuadro de diálogo que se muestra, configure los parámetros de PVC.

      Parámetro

      Descripción

      PVC Type

      En esta sección, seleccione Local PV.

      PVC Name

      Escriba el nombre de PVC, que debe ser único en el mismo espacio de nombres.

      Creation Method

      Solo puede seleccionar Dynamically provision para crear un PVC, PV y almacenamiento subyacente en la consola en modo en cascada.

      Storage Classes

      La clase de almacenamiento de los PV locales es de csi-local-topology.

      Access Mode

      Los PV locales solo soportan ReadWriteOnce, lo que indica que un volumen de almacenamiento puede montarse en un nodo en modo de lectura/escritura. Para obtener más información, véase Modos de acceso al volumen.

      Storage Pool

      Ver el grupo de almacenamiento importado. Para obtener más información acerca de cómo importar un nuevo volumen de datos al grupo de almacenamiento, consulte Grupos de almacenamiento.

      Capacity (GiB)

      Capacidad del volumen de almacenamiento solicitado.

    2. Haga clic en Create para crear un PVC y un PV.

      Puede elegir Storage en el panel de navegación y ver el PVC y PV creados en las páginas de fichas PersistentVolumeClaims (PVCs) y PersistentVolumes (PVs).

      El modo de enlace de volumen de la clase de almacenamiento local (denominada csi-local-topology) es enlace tardío (es decir, el valor de volumeBindingMode es WaitForFirstConsumer). En este modo, la creación y el enlace de PV se retrasan. El PV correspondiente se crea y enlaza solo cuando se utiliza el PVC durante la creación de la carga de trabajo.

  3. Cree una aplicación.

    1. En el panel de navegación de la izquierda, haga clic en Workloads. En el panel derecho, haga clic en la ficha Deployments.
    2. Haga clic en Create Workload en la esquina superior derecha. En la página mostrada, haga clic en Data Storage en el área Container Settings y haga clic en Add Volume para seleccionar PVC.
      Montar y utilizar volúmenes de almacenamiento, como se muestra en Tabla 1. Para obtener más información sobre otros parámetros, consulte Workloads.
      Tabla 1 Montaje de un volumen de almacenamiento

      Parámetro

      Descripción

      PVC

      Seleccione un PV local existente.

      Un PV local no se puede montar repetidamente en varias cargas de trabajo.

      Add Container Path

      Configure los parámetros siguientes:
      1. Mount Path: Introduzca una ruta de acceso del contenedor. Por ejemplo, /tmp.
        Este parámetro indica la ruta de contenedor en la que se montará un volumen de datos. No monte el volumen en un directorio del sistema como / o /var/run; esta acción puede causar errores de contenedor. Se recomienda montar el volumen en un directorio vacío. Si el directorio no está vacío, asegúrese de que no hay archivos que afecten al inicio de contenedor. De lo contrario, se reemplazarán los archivos, lo que provocará errores de inicio de contenedor o errores de creación de carga de trabajo.
        AVISO:

        Cuando el contenedor está montado en un directorio de alto riesgo, se recomienda utilizar una cuenta con los permisos mínimos para iniciar el contenedor; de lo contrario, los archivos de alto riesgo en la máquina host podrían estar dañados.

      2. Subpath: Introduzca una ruta secundaria, por ejemplo, tmp.

        Se utiliza una ruta secundaria para montar un volumen local de modo que se utilice el mismo volumen de datos en un solo pod. Si este parámetro se deja en blanco, la ruta raíz se utiliza de forma predeterminada.

      3. Permission
        • Read-only: Solo puede leer los datos en los volúmenes montados.
        • Read/Write: Puede modificar los volúmenes de datos montados en la ruta de acceso. Los datos recién escritos no se migran si se migra el contenedor, lo que puede causar la pérdida de datos.

      Puede hacer clic en para agregar varias rutas y subrutas.

      En este ejemplo, el disco se monta en la trayectoria /data del contenedor. Los datos contenedor generados en esta ruta se almacenan en el PV local.

    3. Después de completar la configuración, haga clic en Create.

      Una vez creada la carga de trabajo, puede probar Verificación de la persistencia y el uso compartido de datos.

(kubectl) Creación automática de un PV local

  1. Utilice kubectl para conectarse al clúster.
  2. Utilice StorageClass para crear dinámicamente un PVC y un PV.

    1. Cree el archivo pvc-local.yaml.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-local
        namespace: default
      spec:
        accessModes:
          - ReadWriteOnce             # The local PV must adopt ReadWriteOnce.
        resources:
          requests:
            storage: 10Gi             # Size of the local PV.
        storageClassName: csi-local-topology    # StorageClass is local PV.
      Tabla 2 Parámetros clave

      Parámetro

      Obligatorio

      Descripción

      storage

      Capacidad solicitada en el PVC, en Gi.

      storageClassName

      Nombre de clase de almacenamiento. El nombre de clase de almacenamiento de PV local es csi-local-topology.

    2. Ejecute el siguiente comando para crear un PVC:
      kubectl apply -f pvc-local.yaml

  3. Cree una aplicación.

    1. Cree un archivo denominado web-demo.yaml. En este ejemplo, el PV local se monta en la trayectoria /data.
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: web-local
        namespace: default
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: web-local
        serviceName: web-local   # Headless Service name.
        template:
          metadata:
            labels:
              app: web-local
          spec:
            containers:
            - name: container-1
              image: nginx:latest
              volumeMounts:
              - name: pvc-disk    #Volume name, which must be the same as the volume name in the volumes field.
                mountPath: /data  #Location where the storage volume is mounted.
            imagePullSecrets:
              - name: default-secret
            volumes:
              - name: pvc-disk    #Volume name, which can be customized.
                persistentVolumeClaim:
                  claimName: pvc-local    #Name of the created PVC.
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: web-local   # Headless Service name.
        namespace: default
        labels:
          app: web-local
      spec:
        selector:
          app: web-local
        clusterIP: None
        ports:
          - name: web-local
            targetPort: 80
            nodePort: 0
            port: 80
            protocol: TCP
        type: ClusterIP
    2. Ejecute el siguiente comando para crear una aplicación en la que está montado el PV local:
      kubectl apply -f web-local.yaml

      Una vez creada la carga de trabajo, puede probar Verificación de la persistencia de datos.

Verificación de la persistencia de datos

  1. Vea la aplicación desplegada y los archivos locales.

    1. Ejecute el siguiente comando para ver el pod creado:
      kubectl get pod | grep web-local
      Producto esperado:
      web-local-0                  1/1     Running   0               38s
    2. Ejecute el siguiente comando para comprobar si el PV local se ha montado en la ruta /data:
      kubectl exec web-local-0 -- df | grep data

      Producto esperado:

      /dev/mapper/vg--everest--localvolume--persistent-pvc-local          10255636     36888  10202364   0% /data
    3. Ejecute el siguiente comando para ver los archivos en la ruta /data:
      kubectl exec web-local-0 -- ls /data

      Producto esperado:

      lost+found

  2. Ejecute el siguiente comando para crear un archivo llamado static en la ruta /data:

    kubectl exec web-local-0 --  touch /data/static

  3. Ejecute el siguiente comando para ver los archivos en la ruta /data:

    kubectl exec web-local-0 -- ls /data

    Producto esperado:

    lost+found
    static

  4. Ejecute el siguiente comando para eliminar el pod llamado web-local-0:

    kubectl delete pod web-local-0

    Producto esperado:

    pod "web-local-0" deleted

  5. Después de la eliminación, el controlador de StatefulSet crea automáticamente una réplica con el mismo nombre. Ejecute el siguiente comando para comprobar si se han modificado los archivos de la ruta /data:

    kubectl exec web-local-0 -- ls /data

    Producto esperado:

    lost+found
    static

    Si el archivo static todavía existe, los datos en el PV local pueden almacenarse de forma persistente.

Operaciones relacionadas

También puede realizar las operaciones que aparecen en Tabla 3.
Tabla 3 Operaciones relacionadas

Operación

Descripción

Procedimiento

Consulta de eventos

Puede ver los nombres de eventos, los tipos de eventos, el número de ocurrencias, los eventos de Kubernetes, la hora de primera ocurrencia y la hora de última ocurrencia del PVC o PV.

  1. Elija Storage en el panel de navegación y haga clic en la ficha PersistentVolumeClaims (PVCs) o PersistentVolumes (PVs).
  2. Haga clic en View Events en la columna Operation del PVC o del PV de destino para ver los eventos generados en una hora (los datos de eventos se conservan durante una hora).

Consulta de un archivo YAML

Puede ver, copiar y descargar los archivos YAML de un PVC o PV.

  1. Elija Storage en el panel de navegación y haga clic en la ficha PersistentVolumeClaims (PVCs) o PersistentVolumes (PVs).
  2. Haga clic en View YAML en la columna Operation del PVC o del PV de destino para ver o descargar el YAML.