Storage

10

En esta página, se explican los conceptos de almacenamiento de los clústeres de Anthos alojados en VMware (GKE On-Prem).

Resumen

Los clústeres de Anthos alojados en VMware se integran a sistemas de almacenamiento de archivos o bloques externos mediante el almacenamiento VMware vSphere, complementos de volumen en el árbol de Kubernetes (o “controladores”) y controladores de Container Storage Interface (CSI).

Los clústeres de los clústeres de Anthos alojados en VMware usan un StorageClass de Kubernetes predeterminado para aprovisionar almacenamiento para cargas de trabajo con estado en un almacén de datos de vSphere. También puedes usar una StorageClass para aprovisionar diferentes volúmenes de almacenamiento.

Almacenamiento de vSphere

De forma predeterminada, los clústeres de los clústeres de Anthos alojados en VMware usan el almacenamiento de vSphere. El clúster de administrador requiere un almacén de datos de vSphere aprovisionado con anterioridad para los datos etcd.

Cuando creas un clúster de usuarios, los clústeres de Anthos alojados en VMware usan el complemento de volumen de Kubernetes de vSphere para aprovisionar de forma dinámica nuevos discos de máquina virtual (VMDK) en un almacén de datos de vSphere. Ten en cuenta que antes de la versión 1.2, los clústeres de usuario usaban el mismo almacén de datos que los clústeres de administrador.

Los almacenes de datos de vSphere que usan los clústeres de administrador y de usuario pueden estar respaldados por NFS, vSAN o VMFS en un dispositivo de almacenamiento en bloques, como un arreglo de almacenamiento externo. En un entorno de varios hosts, cada dispositivo de almacenamiento en bloques se debe adjuntar a todos los hosts del entorno, y el almacén de datos debe configurarse en cada host a través de la opción Mount Datastore on Additional Hosts (Activar el almacén de datos en los hosts adicionales).

Almacenamiento predeterminado

Los clústeres de clústeres de Anthos alojados en VMware incluyen una StorageClass predeterminada de Kubernetes, que determina cómo Kubernetes debe aprovisionar el almacenamiento. Después de que Kubernetes aprovisiona volúmenes de almacenamiento, los PersistentVolumes de Kubernetes los representan.

La StorageClass predeterminada de un clúster de usuario apunta a un almacén de datos de vSphere, que se establece en el campo datastore de la configuración de StorageClass. De forma predeterminada, los PersistentVolumes de Kubernetes aprovisionados para el clúster de usuario son los VMDK de ese almacén de datos. Este no siempre es el mismo almacén de datos que usa el clúster de administrador.

En los clústeres de Anthos alojados en VMware, los StatefulSets de Kubernetes (cargas de trabajo con estado que generalmente requieren almacenamiento continuo) usan PersistentVolumeClaims respaldados por StorageClasss que apuntan de forma predeterminada al almacenamiento de vSphere.

Container Storage Interface

La Container Storage Interface (CSI) es una API estándar abierta que permite a Kubernetes exponer sistemas de almacenamiento arbitrarios a cargas de trabajo en contenedores. Cuando implementas un controlador de volúmenes compatible con CSI en un clúster de Anthos alojado en VMware, las cargas de trabajo pueden conectarse directamente a un dispositivo de almacenamiento compatible sin tener que pasar por el almacenamiento de vSphere.

Para usar CSI en tu clúster, debes implementar el controlador de CSI que proporciona tu proveedor de almacenamiento. Luego, puedes configurar las cargas de trabajo para que usen la StorageClass del controlador o configurarla como la StorageClass predeterminada.

Nos asociamos con muchos proveedores de almacenamiento para calificar sus sistemas de almacenamiento con los clústeres de Anthos alojados en VMware. Consulta la lista completa de socios de almacenamiento calificados.

Controlador de CSI de vSphere

De forma predeterminada, los clústeres de Anthos alojados en VMware aprovechan el complemento de volumen en árbol de VMware, el proveedor de servicios en la nube de vSphere (VCP), que habilita de forma automática la compatibilidad con almacenes de datos de VMware, incluido vSAN. El controlador CSI de vSphere es la implementación del controlador de volúmenes de vSphere de la interfaz de Container Storage y es un componente de VMware Cloud Native Storage. Se implementa de forma automática en los clústeres de Anthos alojados en VMware y, por lo general, está disponible a partir de los clústeres de Anthos alojados en VMware versión 1.7.

Expansión de volumen

La expansión de volumen es una función beta de Kubernetes 1.20.

Puedes expandir el tamaño de un volumen persistente después de que se haya aprovisionado mediante la edición de la solicitud de capacidad en PersistentVolumeClaim (PVC). Puedes realizar una expansión en línea mientras un volumen está en uso mediante un pod, o una expansión sin conexión en la que el volumen no está en uso.

En el controlador de CSI de vSphere, la expansión sin conexión está disponible en las versiones 7.0 de vSphere y la expansión en línea está disponible en la actualización 2.0 de la versión 7.0.

La StorageClass standard-rwo del controlador de CSI de vSphere, que se instala en clústeres de usuario de forma automática, configura allowVolumeExpansion como verdadero de forma predeterminada para los clústeres recién creados que se ejecutan en vSphere 7.0 o una versión posterior. Puedes usar la expansión en línea y sin conexión para los volúmenes que usan esta StorageClass. En un clúster actualizado, debido a que las StorageClass no se modifican en las actualizaciones de clústeres, cuando un clúster se actualiza de la versión 1.7 a la 1.8, el parámetro de configuración allowVolumeExpansion de standard-rwo permanece sin configurar, lo que significa que no se permite la expansión de volumen.

Para obtener más información sobre la expansión de volumen, consulta Usa la expansión de volumen.

Instantáneas del volumen de CSI

Puedes crear instantáneas de almacenamiento continuo con los recursos VolumeSnapshot y VolumeSnapshotClass. Para usar esta característica en un volumen de CSI, el controlador CSI debe admitir instantáneas de volumen, y el contenedor de archivo adicional external-snapshotter debe incluirse en la implementación del controlador CSI.

Para obtener más información sobre las instantáneas de volumen, consulta Usa instantáneas de volumen.

Los controladores de instantáneas CSI se implementan de forma automática cuando creas un clúster.

A partir de la versión 1.8 de los clústeres de Anthos alojados en VMware, están disponibles las versiones v1 de los objetos VolumeSnapshot, VolumeSnapshotContent y VolumeSnapshotClass. Las versiones v1beta1 están obsoletas y dejarán de entregarse a partir de una versión posterior.

Limpieza de volumen

Cuando borras un clúster de usuario, es posible que los volúmenes aprovisionados por el complemento de volumen en árbol de VMware no se borren. Sin embargo, cuando se borra un clúster de usuario, no se borran los volúmenes aprovisionados por el controlador de CSI de vSphere. Debes confirmar que todos los volúmenes, PVC y StatefulSets se borren antes de borrar el clúster.

Complementos de volumen de árbol de Kubernetes

Kubernetes se entrega con cierta cantidad de complementos de volumen en árbol. Tienes la opción de usar cualquiera de estos a fin de proporcionar almacenamiento en bloques o de archivos para tus cargas de trabajo con estado. Los complementos en árbol permiten que las cargas de trabajo se conecten directamente al almacenamiento sin tener que pasar por el almacenamiento de vSphere.

Mientras que el almacenamiento de vSphere proporciona de manera automática el aprovisionamiento de volúmenes dentro de un almacén de datos respaldado por cualquier dispositivo de almacenamiento iSCSI, FC o NFS, muchos de los complementos en árbol no admiten el aprovisionamiento dinámico. Necesitan que crees PersistentVolumes de manera manual.

En la siguiente tabla, se describen varios complementos de volumen en árbol:

Complemento de volumen en árbolDescripciónModos de acceso compatiblesAprovisionamiento dinámico
Canal de fibraComplemento genérico de almacenamientoUn solo Pod de lectura/escrituraNo
iSCSIComplemento genérico de almacenamientoUn solo Pod de lectura/escrituraNo
NFSComplemento genérico de almacenamientoVarios Pods de lectura/escrituraNo

Configurar el almacenamiento del clúster

Si deseas aprovisionar volúmenes de almacenamiento distintos de los almacenes de datos de vSphere, puedes crear una StorageClass nueva en un clúster que use un controlador de almacenamiento diferente. Luego, puedes establecer la StorageClass como la configuración predeterminada del clúster o configurar las cargas de trabajo para que usen la StorageClass (ejemplo de StatefulSet).

Soluciona problemas

Consulta Soluciona problemas de almacenamiento.

Lecturas adicionales