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 disco de EVS existente a través de un PV estático

CCE le permite crear un PV utilizando un disco de EVS existente. Una vez creado el PV, puede crear un PVC y vincularlo al PV. Este modo es aplicable a escenarios en los que el almacenamiento subyacente está disponible o se factura anualmente/mensualmente.

Requisitos previos

  • Ha creado un clúster e instalado el complemento de CSI (everest) en el clúster.
  • Ha creado un disco de EVS que cumple con los requisitos descritos en Restricciones.
  • 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.

Restricciones

  • El disco de EVS existente no puede ser un disco del sistema, un disco de DSS o un disco compartido.
  • El disco de EVS debe ser uno de los tipos admitidos en la región actual (E/S común, E/S alta, SSD de uso general, SSD extremo y E/S ultraalta) y el tipo de dispositivo de disco de EVS debe ser SCSI.
  • El disco de EVS debe estar disponible y no ser utilizado por otros recursos.
  • La AZ del disco de EVS debe ser la misma que la del nodo del clúster. De lo contrario, el disco de EVS no se puede montar y el pod no se puede iniciar.
  • Si el disco de EVS está cifrado, la clave debe estar disponible.
  • Solo se admiten los discos de EVS del proyecto de empresa al que pertenece el clúster y el proyecto de empresa predeterminado.

(Consola) Uso de un disco de EVS existente

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

    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 este ejemplo, seleccione EVS.

      PVC Name

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

      Creation Method

      • Si el almacenamiento subyacente está disponible, puede crear un volumen de almacenamiento o utilizar un volumen de almacenamiento existente para crear estáticamente un PVC en función de si se ha creado un PV.
      • Si no hay ningún almacenamiento subyacente disponible, puede seleccionar Dynamically provision. Para obtener más información, véase Uso de un disco de EVS con un PV dinámico.

      En este ejemplo, seleccione Create new para crear un PV y un PVC al mismo tiempo en la consola.

      PVa

      Seleccione un PV existente en el clúster. Es necesario crear un PV por adelantado. Para obtener más información, consulte "Creación de un volumen de almacenamiento (PV)" de Operaciones relacionadas.

      En este ejemplo, no es necesario establecer este parámetro.

      EVSb

      Haga clic en Select EVS. En la página mostrada, seleccione el disco de EVS que cumpla con sus requisitos y haga clic en OK.

      PV Nameb

      Introduzca el nombre de PV, que debe ser único en el mismo clúster.

      Access Modeb

      Los discos de EVS solo admiten ReadWriteOnce, lo que indica que un volumen de almacenamiento se puede montar en un nodo en modo de lectura/escritura. Para obtener más información, véase Modos de acceso al volumen.

      Reclaim Policyb

      Puede seleccionar Delete o Retain para especificar la política de recuperación del almacenamiento subyacente cuando se elimina el PVC. Para obtener más información, véase Política de reclamo de PV.

      a: El parámetro está disponible cuando Creation Method se establece en Use existing.

      b: El parámetro está disponible cuando Creation Method se establece en Create new.

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

  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 StatefulSets.
    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 volumen de EVS existente.

      Un volumen de EVS 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 de contenedor generados en esta ruta se almacenan en el disco de EVS.

      Un disco ReadWriteOnce de EVS no compartido no se puede montar en varios pods de una carga de trabajo. Como resultado, los pods no pueden arrancar correctamente. Asegúrese de que el número de pods de carga de trabajo es 1 al montar un disco de EVS.

    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 de datos.

(kubectl) Uso de un disco de EVS existente

  1. Utilice kubectl para conectarse al clúster.
  2. Crear un PV.

    1. Cree el archivo pv-evs.yaml.
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        annotations:
          pv.kubernetes.io/provisioned-by: everest-csi-provisioner
          everest.io/reclaim-policy: retain-volume-only         # (Optional) The PV is deleted while the underlying volume is retained.
        name: pv-evs    # PV name.
        labels:
          failure-domain.beta.kubernetes.io/region: <your_region>   # Region of the node where the application is to be deployed.
          failure-domain.beta.kubernetes.io/zone: <your_zone>       # AZ of the node where the application is to be deployed.
      spec:
        accessModes:
          - ReadWriteOnce     # Access mode. The value is fixed to ReadWriteOnce for EVS disks.
        capacity:
          storage: 10Gi       # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768.
        csi:
          driver: disk.csi.everest.io     # Dependent storage driver for the mounting.
          fsType: ext4
          volumeHandle: <your_volume_id>   # Volume ID of the EVS disk.
          volumeAttributes:
            everest.io/disk-mode: SCSI           # Device type of the EVS disk. Only SCSI is supported.
            everest.io/disk-volume-type: SAS     # EVS disk type.
            storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
            everest.io/crypt-key-id: <your_key_id>    # (Optional) Encryption key ID. Mandatory for an encrypted disk.
            everest.io/enterprise-project-id: <your_project_id>  # (Optional) Enterprise project ID. If an enterprise project is specified, you need to use the same enterprise project when creating a PVC. Otherwise, the PVC cannot be bound to a PV.
        persistentVolumeReclaimPolicy: Delete    # Reclaim policy.
        storageClassName: csi-disk              # Storage class name. The value must be csi-disk for EVS disks.
      Tabla 2 Parámetros clave

      Parámetro

      Obligatorio

      Descripción

      everest.io/reclaim-policy: retain-volume-only

      No

      Opcional.

      Actualmente, solo se admite retain-volume-only.

      Este campo solo es válido cuando la versión más reciente es 1.2.9 o posterior y la política de recuperación es Delete. Si la política de reclamación es de Delete y el valor actual es de retain-volume-only el PV asociado se elimina mientras se conserva el volumen de almacenamiento subyacente cuando se elimina un PVC.

      failure-domain.beta.kubernetes.io/region

      Región donde se encuentra el clúster.

      Para obtener más información sobre el valor de region, consulte Regiones y puntos de conexión.

      failure-domain.beta.kubernetes.io/zone

      AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      Para obtener más información sobre el valor de zone, consulte Regiones y puntos de conexión.

      volumeHandle

      ID de volumen del disco de EVS.

      Para obtener el ID de volumen, inicie sesión en Cloud Server Console. En el panel de navegación, elija Elastic Volume Service > Disks. Haga clic en el nombre del disco de EVS de destino para ir a su página de detalles. En la página de ficha Summary, haga clic en el botón de copiar después de ID.

      everest.io/disk-volume-type

      Tipo del disco de EVS. Todas las letras están en mayúsculas.
      • SAS: E/S con capacidad alta
      • SSD: E/S con capacidad ultraalta
      • GPSSD: SSD de uso general
      • ESSD: SSD extremo

      everest.io/crypt-key-id

      No

      Obligatorio cuando el disco de EVS está cifrado. Introduzca el ID de clave de encriptación seleccionado durante la creación del disco de EVS.

      Para obtener el ID de clave de encriptación, inicie sesión en Cloud Server Console. En el panel de navegación, elija Elastic Volume Service > Disks. Haga clic en el nombre del disco de EVS de destino para ir a su página de detalles. En la página de ficha Summary, copie el valor de KMS Key ID en el área Configuration Information.

      everest.io/enterprise-project-id

      No

      Opcional.

      ID de proyecto de empresa del disco de EVS. Si se especifica un proyecto de empresa, debe especificar el mismo proyecto de empresa al crear un PVC. De lo contrario, el PVC no puede estar unido a un PV.

      Para obtener el ID del proyecto de empresa, inicie sesión en Cloud Server Console. En el panel de navegación, elija Elastic Volume Service > Disks. Haga clic en el nombre del disco de EVS de destino para ir a su página de detalles. En la página de ficha Summary, haga clic en el proyecto de empresa de Management Information para acceder a la consola del proyecto de empresa. Copie el ID correspondiente para obtener el ID del proyecto de empresa al que pertenece el disco de EVS.

      persistentVolumeReclaimPolicy

      Se admite una política de recuperación cuando la versión del clúster es o posterior a 1.19.10 y la versión everest es o posterior a 1.2.9.

      Las políticas de recuperación Delete y Retain son compatibles. Para obtener más información, véase Política de reclamo de PV. Si se requiere una alta seguridad de los datos, se recomienda seleccionar Retain para evitar que los datos se eliminen por error.

      Delete:

      • Si no se especifica everest.io/reclaim-policy, tanto el PV como el disco de EVS se eliminan cuando se elimina un PVC.
      • Si everest.io/reclaim-policy se establece en retain-volume-only set cuando se elimina un PVC, se elimina el PV pero se conservan los recursos de EVS.

      Retain: Cuando se elimina un PVC, el PV y los recursos de almacenamiento subyacentes no se eliminan. En su lugar, debe eliminar manualmente estos recursos. Después de eso, el PV está en el estado Released y no puede estar ligado al PVC de nuevo.

      storageClassName

      El nombre de clase de almacenamiento para los discos de EVS es csi-disk.

    2. Ejecute el siguiente comando para crear un PV:
      kubectl apply -f pv-evs.yaml

  3. Cree un PVC.

    1. Cree el archivo pvc-evs.yaml.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-evs
        namespace: default
        annotations:
            everest.io/disk-volume-type: SAS    # EVS disk type.
          everest.io/crypt-key-id: <your_key_id>    # (Optional) Encryption key ID. Mandatory for an encrypted disk.
          everest.io/enterprise-project-id: <your_project_id>  # (Optional) Enterprise project ID. If an enterprise project is specified, you need to use the same enterprise project when creating a PVC. Otherwise, the PVC cannot be bound to a PV.
        labels:
          failure-domain.beta.kubernetes.io/region: <your_region>   # Region of the node where the application is to be deployed.
          failure-domain.beta.kubernetes.io/zone: <your_zone>       # AZ of the node where the application is to be deployed.
      spec:
        accessModes:
        - ReadWriteOnce               # The value must be ReadWriteOnce for EVS disks.
        resources:
          requests:
            storage: 10Gi             # EVS disk capacity, ranging from 1 to 32768. The value must be the same as the storage size of the existing PV.
        storageClassName: csi-disk    # Storage class type for EVS disks.
        volumeName: pv-evs            # PV name.
      Tabla 3 Parámetros clave

      Parámetro

      Obligatorio

      Descripción

      failure-domain.beta.kubernetes.io/region

      Región donde se encuentra el clúster.

      Para obtener más información sobre el valor de region, consulte Regiones y puntos de conexión.

      failure-domain.beta.kubernetes.io/zone

      AZ donde se crea el volumen de EVS. Debe ser la misma que la AZ prevista para la carga de trabajo.

      Para obtener más información sobre el valor de zone, consulte Regiones y puntos de conexión.

      storage

      Capacidad solicitada en el PVC, en Gi.

      El valor debe ser el mismo que el tamaño de almacenamiento del PV existente.

      volumeName

      Nombre de PV, que debe ser el mismo que el nombre de PV en 1.

      storageClassName

      Nombre de la clase de almacenamiento, que debe ser el mismo que la clase de almacenamiento del PV en 1.

      El nombre de clase de almacenamiento de los volúmenes de EVS es csi-disk.

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

  4. Cree una aplicación.

    1. Cree un archivo denominado web-evs.yaml. En este ejemplo, el volumen de EVS se monta en la ruta /data.
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: web-evs
        namespace: default
      spec:
       replicas: 1            # The number of workload replicas that use the EVS volume must be 1.
        selector:
          matchLabels:
            app: web-evs
        serviceName: web-evs   # Headless Service name.
        template:
          metadata:
            labels:
              app: web-evs
          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-evs    # Name of the created PVC.
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: web-evs   # Headless Service name.
        namespace: default
        labels:
          app: web-evs
      spec:
        selector:
          app: web-evs
        clusterIP: None
        ports:
          - name: web-evs
            targetPort: 80
            nodePort: 0
            port: 80
            protocol: TCP
        type: ClusterIP
    2. Ejecute el siguiente comando para crear una carga de trabajo en la que está montado el volumen de EVS:
      kubectl apply -f web-evs.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 de volumen de EVS.

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

      Producto esperado:

      /dev/sdc              10255636     36888  10202364   0% /data
    3. Ejecute el siguiente comando para ver los archivos en la ruta /data:
      kubectl exec web-evs-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-evs-0 --  touch /data/static

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

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

    Producto esperado:

    lost+found
    static

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

    kubectl delete pod web-evs-0

    Producto esperado:

    pod "web-evs-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-evs-0 -- ls /data

    Producto esperado:

    lost+found
    static

    Si el archivo static todavía existe, los datos en el volumen de EVS se pueden almacenar de forma persistente.

Operaciones relacionadas

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

Operación

Descripción

Procedimiento

Creación de un volumen de almacenamiento (PV)

Cree un PV en la consola de CCE.

  1. Elija Storage en el panel de navegación y haga clic en la ficha PersistentVolumes (PVs). Haga clic en Create Volume en la esquina superior derecha. En el cuadro de diálogo que se muestra, configure los parámetros.
    • Volume Type: Seleccione EVS.
    • EVS: Haga clic en Select EVS. En la página mostrada, seleccione el disco de EVS que cumpla con sus requisitos y haga clic en OK.
    • PV Name: Introduzca el nombre de PV, que debe ser único en el mismo clúster.
    • Access Mode: los discos de EVS solo admiten ReadWriteOnce, lo que indica que un volumen de almacenamiento se puede montar en un nodo en modo lectura/escritura. Para obtener más información, véase Modos de acceso al volumen.
    • Reclaim Policy: Delete o Retain. Para obtener más información, véase Política de reclamo de PV.
  2. Haga clic en Create.

Ampliación de la capacidad de un disco de EVS

Amplíe rápidamente la capacidad de un disco de EVS montado en la consola de CCE.

Solo se puede ampliar la capacidad de los discos de EVS de pago por uso en la consola de CCE. Para ampliar la capacidad de los discos de EVS anuales/mensuales, haga clic en el nombre del volumen para ir a la consola de EVS.

  1. Elija Storage en el panel de navegación y haga clic en la ficha PersistentVolumeClaims (PVCs). Haga clic en More en la columna Operation del PVC de destino y seleccione Scale-out.
  2. Ingrese la capacidad que desea agregar y haga clic en OK.

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.