Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Almacenamiento de VMware vSphere

Para proporcionar cargas de trabajo con estado con almacenamiento de VMware vSphere, recomendamos crear una StorageClass de vSphereVolume. Esta práctica aprovisiona dinámicamente almacenamiento de vSphere cuando las cargas de trabajo solicitan volúmenes a través de un PersistentVolumeClaim.

Para aprovisionar dinámicamente almacenamiento en vSphere, el proveedor de vSphere debe estar habilitado. Consulta las siguientes páginas para más información: vSphere fuera del árbol y vSphere en el árbol.

Requisitos previos

Para aprovisionar volúmenes de vSphere en un clúster creado con RKE2, el proveedor de nube vSphere debe estar habilitado explícitamente en las opciones del clúster.

Creando una StorageClass

Los siguientes pasos también se pueden realizar utilizando la `kubectl`herramientas shell. Consulta la documentación de Kubernetes sobre volúmenes persistentes para más detalles.

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Elige el clúster al que deseas proporcionar almacenamiento de vSphere y haz clic en Explorar.

  3. En la barra de navegación izquierda, selecciona Almacenamiento  StorageClasses.

  4. Haga clic en Crear.

  5. Introduce un Nombre para la StorageClass.

  6. Bajo Provisionador, selecciona Volumen de VMWare vSphere.

    vsphere storage class
  7. Opcionalmente, especifica propiedades adicionales para esta clase de almacenamiento bajo Parámetros. Consulta la documentación de almacenamiento de vSphere para más detalles.

  8. Haga clic en Crear.

Creando una Carga de Trabajo con un Volumen de VMware vSphere

  1. En la barra de navegación izquierda, haz clic en Carga de Trabajo.

  2. Haga clic en Crear.

  3. Haz clic en StatefulSet.

  4. En la pestaña Plantillas de Solicitud de Volumen, haz clic en Añadir Plantilla de Solicitud.

  5. Introduce un nombre de volumen persistente.

  6. En el campo Clase de Almacenamiento, selecciona la StorageClass de vSphere que creaste.

  7. Introduce la Capacidad requerida para el volumen. Luego haz clic en Definir.

  8. Asigna una vía en el campo Punto de Montaje. Esta es la vía completa donde el volumen se montará en el sistema de archivos del contenedor, p. ej. /persistent.

  9. Haga clic en Crear.

Verificando la Persistencia del Volumen

  1. En la barra de navegación izquierda, haz clic en Carga de Trabajo  Pods.

  2. Ve a la carga de trabajo que acabas de crear y haz clic en ⋮ > Ejecutar Shell.

  3. Toma nota del directorio en la raíz donde se ha montado el volumen (en este caso /persistent).

  4. Crea un archivo en el volumen ejecutando el comando touch /<volumeMountPoint>/data.txt.

  5. Cierra la ventana del shell.

  6. Haz clic en el nombre de la carga de trabajo para revelar información detallada.

  7. Haz clic en ⋮ > Eliminar.

  8. Observa que el pod ha sido eliminado. Luego, se programa un nuevo pod para reemplazarlo, de modo que la carga de trabajo mantenga su escala configurada de un solo pod stateful.

  9. Una vez que el pod de reemplazo esté en funcionamiento, haz clic en Ejecutar Shell.

  10. Inspecciona el contenido del directorio donde se monta el volumen introduciendo ls -l /<volumeMountPoint>. Ten en cuenta que el archivo que creaste anteriormente sigue presente.

    workload-persistent-data

Por qué usar StatefulSets en lugar de Deployments

Siempre debes usar StatefulSets para cargas de trabajo que consumen almacenamiento vSphere, ya que este tipo de recurso está diseñado para abordar una limitación del almacenamiento en bloques VMDK.

Dado que los volúmenes vSphere están respaldados por almacenamiento en bloques VMDK, solo admiten un modo de acceso de ReadWriteOnce. Esta configuración restringe el volumen para que solo pueda montarse en un único pod a la vez, a menos que todos los pods que consumen ese volumen estén co-localizados en el mismo nodo. Este comportamiento hace que un recurso de Deployment sea inutilizable para escalar más allá de una única réplica si consume volúmenes vSphere.

Incluso usar un recurso de Deployment con solo una única réplica puede resultar en una situación de interbloqueo al actualizar el Deployment. Si el pod actualizado se programa en un nodo diferente del que reside el pod existente, fallará al iniciarse porque el VMDK sigue adjunto al otro nodo.