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 EV

Los EV se aplican al almacenamiento temporal de datos, la recuperación ante desastres y el uso compartido de datos en tiempo de ejecución. Se eliminará al eliminar o transferir los pods de carga de trabajo. Esta sección describe cómo usar un EV.

CCE proporciona los siguientes tipos de emptyDir:
  • emptyDir: emptyDir nativo de Kubernetes. Su ciclo de vida es el mismo que el de un pod. La memoria se puede especificar como el medio de almacenamiento. Cuando se elimina el pod, el volumen emptyDir se elimina y sus datos se pierden.
  • EV local: Los discos de datos locales en un nodo forman un grupo de almacenamiento (VolumeGroup) con LVM. Los LV se crean como el medio de almacenamiento de emptyDir y se montan en contenedores. Los LV ofrecen un mejor rendimiento que el medio de almacenamiento predeterminado de emptyDir.

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.
  • Para usar un EV local, necesita importar un disco de datos de un nodo al grupo de almacenamiento EV local. Para obtener más información, véase Grupos de almacenamiento.

Restricciones

  • Los EV locales solo se admiten cuando la versión del clúster es v1.21.2-r0 o posterior y la versión adicional es 1.2.29 o posterior.
  • 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.
  • Asegúrese de que el directorio /var/lib/kubelet/pods/ no está montado en el pod del nodo. De lo contrario, el pod, montado con tales volúmenes, puede no ser eliminado.

emptyDir

Usando la consola

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster.
  2. En el panel de navegación de la izquierda, haga clic en Workloads. En el panel derecho, haga clic en la ficha Deployments.
  3. Haga clic en Create Workload en la esquina superior derecha de la página. En el área Container Settings, haga clic en la ficha Data Storage y haga clic en Add Volume > emptyDir.
  4. Monte y utilice los 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 EV

    Parámetro

    Descripción

    Storage Medium

    Memory:
    • Puede seleccionar esta opción para mejorar la velocidad de ejecución, pero la capacidad de almacenamiento está sujeta al tamaño de la memoria. Este modo es aplicable cuando el volumen de datos es pequeño y se requiere una lectura y escritura eficientes.
    • Si esta función está desactivada, los datos se almacenan en discos duros, lo que es aplicable a una gran cantidad de datos con bajos requisitos de eficiencia de lectura y escritura.
    NOTA:
    • Si se selecciona Memory, preste atención al tamaño de la memoria. Si la capacidad de almacenamiento excede el tamaño de la memoria, se produce un evento de OOM.
    • Si se selecciona Memory, el tamaño de un EV es el 50% de las especificaciones del pod y no se puede cambiar.
    • Si Memory no está seleccionado, los EV no ocuparán la memoria del sistema.

    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.

  5. Después de configurar otros parámetros de carga de trabajo, haga clic en Create.

Usando kubectl

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Cree un archivo llamado nginx-emptydir.yaml y edítelo.

    vi nginx-emptydir.yaml

    Contenido del archivo YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-emptydir
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-emptydir
      template:
        metadata:
          labels:
            app: nginx-emptydir
        spec:
          containers:
            - name: container-1
              image: nginx:latest
              volumeMounts:
                - name: vol-emptydir     # Volume name, which must be the same as the volume name in the volumes field.
                  mountPath: /tmp        # Path to which an EV is mounted.
          imagePullSecrets:
            - name: default-secret
          volumes:
            - name: vol-emptydir         # Volume name, which can be customized.
              emptyDir:
                medium: Memory          # EV disk medium: If this parameter is set to Memory, the memory is enabled. If this parameter is left blank, the native default storage medium is used.
                sizeLimit: 1Gi          # Volume capacity.

  3. Cree una carga de trabajo.

    kubectl apply -f nginx-emptydir.yaml

EV local

Local Ephemeral Volumes (EVs) se almacenan en los grupos de almacenamiento de EV. Los EV locales ofrecen un mejor rendimiento que el medio de almacenamiento predeterminado de emptyDir nativo y admiten la expansión horizontal.

Usando la consola

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster.
  2. En el panel de navegación de la izquierda, haga clic en Workloads. En el panel derecho, haga clic en la ficha Deployments.
  3. Haga clic en Create Workload en la esquina superior derecha de la página. En el área Container Settings, haga clic en la ficha Data Storage y haga clic en Add Volume > Local Ephemeral Volume (emptyDir).
  4. Montar y utilizar volúmenes de almacenamiento, como se muestra en Tabla 2. Para obtener más información sobre otros parámetros, consulte Workloads.

    Tabla 2 Montaje de un EV local

    Parámetro

    Descripción

    Capacity

    Capacidad del volumen de almacenamiento solicitado.

    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.

  5. Después de configurar otros parámetros de carga de trabajo, haga clic en Create.

Usando kubectl

  1. Utilice kubectl para conectarse al clúster. Para obtener más información, véase Conexión a un clúster con kubectl.
  2. Cree un archivo llamado nginx-emptydir.yaml y edítelo.

    vi nginx-emptydir.yaml

    Contenido del archivo YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-emptydir
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-emptydir
      template:
        metadata:
          labels:
            app: nginx-emptydir
        spec:
          containers:
            - name: container-1
              image: nginx:latest
              volumeMounts:
                - name: vol-emptydir         # Volume name, which must be the same as the volume name in the volumes field.
                  mountPath: /tmp            # Path to which an EV is mounted.
          imagePullSecrets:
            - name: default-secret
          volumes:
            - name: vol-emptydir             # Volume name, which can be customized.
              emptyDir:
                medium: LocalVolume          # If the disk medium of emptyDir is set to LocalVolume, the local EV is used.
                sizeLimit: 1Gi               # Volume capacity.

  3. Cree una carga de trabajo.

    kubectl apply -f nginx-emptydir.yaml

Manejo de excepciones de EV locales

Si un usuario desconecta manualmente un disco de ECS o ejecuta manualmente el comando vgremove, el grupo de almacenamiento de EV puede funcionar mal. Para resolver este problema, configure el nodo para que no se pueda programar siguiendo el procedimiento descrito en Configuración de programación de nodos y, a continuación, restablezca el nodo.