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.
Centro de ayuda/ Cloud Container Engine/ Guía del usuario/ Almacenamiento de contenedores/ Descripción del almacenamiento de contenedores
Actualización más reciente 2024-09-10 GMT+08:00

Descripción del almacenamiento de contenedores

Servicios en la nube para almacenamiento de contenedores

La función de almacenamiento contenedor de CCE se implementa basada en las API de almacenamiento contenedor de Kubernetes(CSI). CCE integra múltiples tipos de almacenamiento en la nube y cubre diferentes escenarios de aplicación. CCE es totalmente compatible con los servicios de almacenamiento nativos de Kubernetes, como emptyDir, hostPath, secret y ConfigMap.

Figura 1 Tipo de almacenamiento de contenedores
CCE le permite montar volúmenes de almacenamiento en la nube en sus pods. Sus características se describen a continuación.
Tabla 1 Comparación de almacenamiento en la nube

Dimensión

EVS

SFS

OBS

SFS Turbo

Definición

EVS permite ofrecer almacenamiento en bloque ajustable para servidores de nube. Con alta confiabilidad, alto rendimiento y especificaciones ricas, los discos de EVS se pueden utilizar para los sistemas de archivos distribuidos, entornos de desarrollo/prueba, almacenes de datos y aplicaciones informáticas de alto rendimiento (HPC).

Ampliable a petabytes, SFS proporciona almacenamiento de archivos compartidos totalmente alojado, altamente disponible y estable para manejar aplicaciones de uso intensivo de datos y ancho de banda en HPC, procesamiento de medios, uso compartido de archivos, gestión de contenido y servicios web.

OBS es un servicio de almacenamiento de objetos estable, seguro y fácil de usar que le permite almacenar datos de cualquier formato y tamaño de forma económica. Puede usarlo en backup/archivo empresarial, video bajo demanda (VoD), videovigilancia y muchos otros escenarios.

Ampliable a 320 TB, SFS Turbo proporciona un almacenamiento de archivos compartido totalmente alojado, altamente disponible y estable para admitir archivos y aplicaciones pequeños que requieren baja latencia y alta IOPS. Puede utilizar SFS Turbo en sitios web de alto tráfico, almacenamiento de registros, compresión/descompresión, aplicaciones de DevOps, OA empresarial y aplicaciones en contenedores.

Lógica de almacenamiento de datos

Almacena datos binarios y no puede almacenar archivos directamente. Para almacenar archivos, primero debe formatear el sistema de archivos.

Almacena archivos y ordena y muestra datos en la jerarquía de archivos y carpetas.

Almacena objetos. Los archivos almacenados directamente generan automáticamente los metadatos del sistema, que también pueden ser personalizados por los usuarios.

Almacena archivos y ordena y muestra datos en la jerarquía de archivos y carpetas.

Modo de acceso

Accesible solo después de ser montado en ECS o BMS e inicializado.

Montado en ECS o BMS usando protocolos de red. Una dirección de red debe especificarse o asignarse a un directorio local para tener acceso.

Accesible con Internet o Direct Connect (DC). Debe especificar la dirección del bucket y utilizar protocolos de transmisión como HTTP y HTTPS.

Admite el protocolo Network File System (NFS) (solo NFSv3). Puede integrar sin problemas las aplicaciones y herramientas existentes con SFS Turbo.

Aprovisionamiento estático

Se admite. Para obtener más información, véase Uso de un disco de EVS existente a través de un PV estático.

Se admite. Para obtener más información, véase Uso de un sistema de archivos de SFS existente con un PV estático.

Se admite. Para obtener más información, véase Uso de un bucket de OBS existente con un PV estático.

Se admite. Para obtener más información, véase Uso de un sistema de archivos de SFS Turbo existente con un PV estático.

Aprovisionamiento dinámico

Se admite. Para obtener más información, véase Uso de un disco de EVS con un PV dinámico.

Se admite. Para obtener más información, véase Uso de un sistema de archivos SFS a través de un PV dinámico.

Se admite. Para obtener más información, véase Uso de un bucket de OBS con un PV dinámico.

No se admite

Funciones

Almacenamiento no compartido. Cada volumen se puede montar en un solo nodo.

Almacenamiento compartido de alto rendimiento y capacidad

Sistema de archivos compartido en modo usuario

Almacenamiento compartido con alto rendimiento y ancho de banda

Uso

HPC, aplicaciones de clúster de núcleo empresarial, sistemas de aplicaciones empresariales y desarrollo/prueba

NOTA:

Las aplicaciones de HPC requieren almacenamiento de alta velocidad y alta IOPS, como el diseño industrial y la exploración de energía.

HPC, procesamiento de medios, gestión de contenido, servicios web, big data y aplicaciones de análisis

NOTA:

Las aplicaciones de HPC requieren un alto ancho de banda y almacenamiento de archivos compartidos, como la secuenciación de genes y el renderizado de imágenes.

Análisis de big data, alojamiento de sitios web estático, video on demand en línea (VoD), secuenciación de genes, videovigilancia inteligente, copia de respaldo y archivado, y cajas en la nube empresarial (discos web)

Sitios web de alto tráfico, almacenamiento de registros, DevOps y OA empresarial

Capacidad

TB

SFS 1.0: PB

EB

Uso general: TB

Latencia

1–2 ms

SFS 1.0: 3–20 ms

10 ms

Uso general: 1–5 ms

IOPS/TPS

33,000 para un solo disco

SFS 1.0: 2,000

Decenas de millones

Uso general: hasta 100,000

Ancho de banda

MB/s

SFS 1.0: GB/s

TB/s

Uso general: hasta GB/s

CSI

Container Storage Interface (CSI) es un estándar para las interfaces de almacenamiento contenedor y una solución de implementación de complementos de almacenamiento recomendada por la comunidad Kubernetes. everest es un complemento de almacenamiento desarrollado por Huawei basado en CSI. Proporciona diferentes tipos de almacenamiento persistente para contenedores.

Modos de acceso al volumen

Los PV se pueden montar en el sistema host solo en el modo soportado por los recursos de almacenamiento subyacentes. Por ejemplo, un sistema de almacenamiento de archivos puede leerse y escribirse por múltiples nodos, pero un disco de EVS puede leerse y escribirse por un solo nodo.

  • ReadWriteOnce: Un volumen puede ser montado como lectura-escritura por un solo nodo.
  • ReadWriteMany: Un volumen puede ser montado como lectura-escritura por muchos nodos.
Tabla 2 Modos de acceso compatibles con los volúmenes de almacenamiento

Tipo de almacenamiento

ReadWriteOnce

ReadWriteMany

EVS

×

SFS

×

OBS

×

SFS Turbo

×

Local PV

×

Política de reclamo de PV

Una política de reclamo de PV se utiliza para eliminar o reclamar volúmenes subyacentes cuando se elimina un PVC. El valor puede ser Delete o Retain.

  • Delete: Al eliminar un PVC se quitará el PV de Kubernetes, por lo que los activos de almacenamiento asociados de la infraestructura externa.

    Los recursos anuales/mensuales no se pueden eliminar mediante la política de recuperación Delete.

  • 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, los recursos de PV están en el estado Released y no se pueden vincular directamente al PVC.

    Puede eliminar y recuperar volúmenes manualmente mediante el procedimiento siguiente:

    1. Elimine el PV.
    2. Borre los datos de los recursos de almacenamiento subyacentes asociados según sea necesario.
    3. Elimine los recursos de almacenamiento subyacentes asociados.

    Para reutilizar los recursos de almacenamiento subyacentes, cree un PV.

Everest también le permite eliminar un PVC sin eliminar los recursos de almacenamiento subyacentes. Esta función solo se puede lograr usando un archivo YAML: Establezca la política de recuperación de PV a Delete y agregue everest.io/reclaim-policy: retain-volume-only a annotations. De esta manera, cuando se elimina el PVC, se elimina el PV, pero se conservan los recursos de almacenamiento subyacentes.

El siguiente archivo YAML toma EVS como ejemplo.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test
  namespace: default
  annotations:
    volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
    everest.io/disk-volume-type: SAS
  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
  resources:
    requests:
      storage: 10Gi
  storageClassName: csi-disk
  volumeName: pv-evs-test

---
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/provisioned-by: everest-csi-provisioner
    everest.io/reclaim-policy: retain-volume-only
  name: pv-evs-test
  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
  capacity:
    storage: 10Gi
  csi:
    driver: disk.csi.everest.io
    fsType: ext4
    volumeHandle: 2af98016-6082-4ad6-bedc-1a9c673aef20
    volumeAttributes:
      storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
      everest.io/disk-mode: SCSI
      everest.io/disk-volume-type: SAS
  persistentVolumeReclaimPolicy: Delete
  storageClassName: csi-disk

Soporte de proyectos empresariales

Para utilizar esta función, el complemento everest debe actualizarse a 1.2.33 o posterior.

  • Creación automática de almacenamiento:

    CCE permite especificar un proyecto de empresa al crear discos de EVS y PVC de OBS. Los recursos de almacenamiento creados (discos de EVS y OBS) pertenecen al proyecto de empresa especificado. El proyecto de empresa puede ser el proyecto de empresa al que pertenece el cluster o el proyecto de empresa por defecto.

    Si no se especifica ningún proyecto de empresa, el proyecto de empresa especificado en StorageClass se utilizará de forma predeterminada para crear recursos de almacenamiento.
    • Para un StorageClass personalizado, puede especificar un proyecto de empresa de StorageClass. Para obtener más información, véase Especificación de un proyecto de empresa para clases de almacenamiento. Si StorageClass no especifica ningún proyecto de empresa, se utilizará el proyecto de empresa predeterminado.
    • Para las clases de almacenamiento csi-disk y csi-obs proporcionadas por CCE, los recursos de almacenamiento creados pertenecen al proyecto de empresa predeterminado.
  • Utilice el almacenamiento existente:

    Cuando cree un PVC mediante un PV, asegúrese de que los everest.io/enterprise-project-id especificados en el PVC y el PV son los mismos porque se ha especificado un proyecto de empresa durante la creación de recursos de almacenamiento. De lo contrario, el PVC y el PV no se pueden unir.

Descripción de la versión del complemento

Para utilizar el complemento CSI (everest), la versión de Kubernetes debe ser 1.15 o posterior.

El complemento Flexvolume (storage-driver) se instala de forma predeterminada cuando se crea un clúster de v1.13 o anterior. Si el clúster se actualiza de v1.13 a v1.15, el storage-driver se sustituye por everest (v1.1.6 o posterior) para el almacenamiento de contenedor. La adquisición no afecta a las funciones de almacenamiento originales.

Diferencias entre los complementos de CSI y de FlexVolume

Tabla 3 CSI y FlexVolume

Solución de Kubernetes

Complementos de CCE

Funciones

Recomendación

CSI

everest

CSI se desarrolló como un estándar para exponer los sistemas de almacenamiento de archivos y bloques arbitrarios a cargas de trabajo en contenedores. Con CSI, los proveedores de almacenamiento de terceros pueden desplegar complementos que expongan nuevos sistemas de almacenamiento en Kubernetes sin tener que tocar el código principal de Kubernetes. En CCE, el complemento everest se instala de forma predeterminada en clústeres de Kubernetes v1.15 y posteriores para conectarse a servicios de almacenamiento (EVS, OBS, SFS y SFS Turbo).

El complemento everest consta de dos partes:

  • everest-csi-controller para creación de volúmenes de almacenamiento, eliminación, ampliación de la capacidad e instantáneas de disco en la nube
  • everest-csi-driver para montar, desmontar y formatear volúmenes de almacenamiento en nodos

Para más detalles, consulte everest.

El complemento everest se instala de forma predeterminada en clústeres de v1.15 y posteriores. CCE reflejará la comunidad de Kubernetes al proporcionar soporte continuo para las capacidades de CSI actualizadas.

FlexVolume

storage-driver

FlexVolume es una interfaz de complemento fuera de árbol que existe en Kubernetes desde la versión 1.2 (antes de CSI). CCE proporcionó volúmenes de FlexVolume a través del complemento del controlador de almacenamiento instalado en clústeres de Kubernetes v1.13 y las versiones anteriores. Este complemento conecta clústeres a servicios de almacenamiento (EVS, OBS, SFS y SFS Turbo).

Para obtener más información, consulte storage-driver.

Para los clústeres creados de v1.13 o anteriores, el complemento de FlexVolume instalado (complemento storage-driver de CCE) todavía se puede utilizar. CCE deja de proporcionar soporte de actualización para este complemento, y se recomienda que actualice estos clústeres.

  • Un clúster solo puede utilizar un tipo de complementos de almacenamiento.
  • El complemento de FlexVolume no puede ser reemplazado por el complemento de CSI en clusters de v1.13 o anteriores. Solo puede actualizar estos clústeres. Para obtener más información, véase Actualización de clúster.

Comprobación de complementos de almacenamiento

  1. Inicie sesión en la consola de CCE.
  2. Haga clic en el nombre del clúster para acceder a la consola del clúster. Elija Add-ons en el panel de navegación.
  3. Haga clic en la ficha Add-on Instance.
  4. Seleccione un clúster en la esquina superior derecha. Se muestra el complemento de almacenamiento predeterminado instalado durante la creación del clúster.