Conceptos básicos del almacenamiento
Volumen
Los archivos en disco de un contenedor son efímeros, lo que presenta los siguientes problemas a las aplicaciones importantes que se ejecutan en el contenedor:
- Cuando se reconstruye un contenedor, se perderán los archivos del contenedor.
- Cuando se ejecutan varios contenedores en un pod al mismo tiempo, los archivos deben compartirse entre los contenedores.
La abstracción de volumen de Kubernetes resuelve estos dos problemas. Los volúmenes, como parte de un pod, no se pueden crear de forma independiente y solo se pueden definir en pods. Todos los contenedores de un pod pueden acceder a sus volúmenes, pero los volúmenes deben haber sido montados en cualquier directorio de un contenedor.
La siguiente figura muestra cómo se utiliza un volumen de almacenamiento entre contenedores en un pod.
Los principios básicos para el uso de volúmenes son los siguientes:
- Se pueden montar varios volúmenes en un pod. Sin embargo, no monte demasiados volúmenes en un pod.
- Se pueden montar varios tipos de volúmenes en un pod.
- Cada volumen montado en un pod se puede compartir entre los contenedores en el pod.
- Se recomienda utilizar PVC y PV para montar volúmenes para Kubernetes.
El ciclo de vida de un volumen es el mismo que el del pod en el que se monta el volumen. Cuando se elimina el pod, también se elimina el volumen. Sin embargo, los archivos en el volumen pueden sobrevivir al volumen, dependiendo del tipo de volumen.
Kubernetes proporciona varios tipos de volumen. En la siguiente tabla se enumeran los tipos disponibles en CCE.
Clasificación de volumen |
Descripción |
---|---|
Almacenamiento local |
Volúmenes locales, como hostPath y emptyDir. Para este tipo de volumen, los datos se almacenan en un nodo específico de un clúster y no pueden migrar con aplicaciones. Cuando el nodo se apaga, los datos ya no están disponibles. |
Almacenamiento en la nube |
Volúmenes en la nube, como SFS y OBS. Para este tipo de volumen, los datos no se almacenan en un nodo de un clúster, sino en un servicio de almacenamiento remoto, y es necesario montar el servicio de almacenamiento en los directorios locales. |
Secreto y ConfigMap |
Secretos y ConfigMaps son los volúmenes especiales. Almacenan los datos del objeto de los clústeres. Los datos del objeto se montan en los nodos como volúmenes para que las aplicaciones las usen. |
PVC |
Modo de definición de volumen que abstrae un volumen como un objeto independiente de un pod. La información de almacenamiento definida (asociada) por el objeto es la información de almacenamiento real del volumen y se utiliza para montar cargas de trabajo de Kubernetes. |
PV y PVC
Kubernetes proporciona PersistentVolumes (PV) y PersistentVolumeClaims (PVC) para resumir los detalles de cómo se proporciona el almacenamiento a partir de cómo se consume. Puede solicitar un tamaño específico de almacenamiento cuando sea necesario, al igual que los pods pueden solicitar niveles específicos de recursos (CPU y memoria).
- PV: describe un volumen de almacenamiento persistente en un clúster. Un PV es un recurso a nivel de clúster al igual que un nodo. Se aplica a todo el clúster de Kubernetes. Un PV tiene un ciclo de vida independiente de cualquier pod individual que utilice el PV.
- PVC: describe una solicitud de almacenamiento por parte de un usuario. Al configurar el almacenamiento para una aplicación, debe reclamar una solicitud de almacenamiento (es decir, PVC). Kubernetes selecciona un PV que mejor se adapte a la solicitud y vincula el fotovoltaico al PVC. Una unión de PVC a PV es un mapeo uno a uno. Al crear un PVC, debe describir los atributos del almacenamiento persistente solicitado, como el tamaño de almacenamiento y el permiso de lectura/escritura.
Puede vincular los PVC a los PV en un pod para que el pod pueda usar recursos de almacenamiento. La siguiente figura muestra la relación entre los PV y los PVC.
Modos de montaje de volúmenes
Puede montar volúmenes de las siguientes maneras:
Utilice PV para describir los recursos de almacenamiento existentes y, a continuación, cree PVC para utilizar los recursos de almacenamiento en los pods. También puede utilizar el modo de creación dinámica. Es decir, especifique el StorageClass al crear un PVC y utilice el aprovisionamiento en el StorageClass para crear automáticamente un PV y vincular el PV al PVC.
Modo de montaje |
Descripción |
Tipo de volumen admitido |
Otras restricciones |
---|---|---|---|
Creación estática de volumen de almacenamiento (utilizando el almacenamiento existente) |
Utilice el almacenamiento existente (como los discos de EVS y los sistemas de archivos SFS) para crear PV y montar los PV en la carga de trabajo con PVC. Kubernetes vincula los PVC a los PV correspondientes para que las cargas de trabajo puedan acceder a los servicios de almacenamiento. |
Todos los volúmenes |
Ninguna |
Creación dinámica de volúmenes de almacenamiento (creación automática de almacenamiento) |
Especifique un StorageClass para un PVC. El aprovisionamiento de almacenamiento crea medios de almacenamiento subyacentes según sea necesario para crear automáticamente PV y vincular directamente el PV al PVC. |
EVS, OBS, SFS y PV local |
Ninguna |
Montaje dinámico (VolumeClaimTemplate) |
Logrado mediante el uso del campo volumeClaimTemplates y depende de la capacidad de creación de PV dinámico de StorageClass. En este modo, cada pod está asociado con un PVC y un PV únicos. Después de reprogramar un pod, los datos originales todavía se pueden montar en él basándose en el nombre de PVC. |
EVS y PV local |
Solo soportado por StatefulSets |
Documentación
- Para obtener más información sobre el almacenamiento de Kubernetes, consulte Almacenamiento.
- Para obtener más información acerca del almacenamiento contenedor de CCE, vea Descripción del almacenamiento de contenedores.