En esta página se explican los conceptos de almacenamiento de Google Distributed Cloud (solo software) para VMware.
Resumen
Google Distributed Cloud se integra con sistemas de almacenamiento de bloques o de archivos externos mediante:
- Controlador de interfaz de almacenamiento de contenedor (CSI) de vSphere
- Controladores de CSI de terceros
- Complementos de volumen de Kubernetes
Almacenes de datos de vSphere
Cuando creas un clúster de administrador, especificas un almacén de datos de vSphere para los datos de etcd del clúster.
Cuando creas un clúster de usuarios, puedes usar el mismo almacén de datos que el clúster de administrador o especificar otro. También puedes especificar almacenes de datos para grupos de nodos concretos.
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 bloque, como una matriz de almacenamiento externa. En un entorno de varios hosts, cada dispositivo de bloque debe conectarse a todos los hosts del entorno y el almacén de datos debe configurarse en cada host mediante la opción Montar almacén de datos en hosts adicionales.
StorageClasses
Cuando creas un PersistentVolumeClaim, puedes especificar un StorageClass que proporcione información sobre cómo se aprovisionará el almacenamiento. Si no especificas una StorageClass, se usará la StorageClass predeterminada.
StorageClass del clúster de administrador
En los clústeres de administrador, hay una StorageClass llamada standard
, que se ha designado como StorageClass predeterminada. En standard
StorageClass lists
se muestra el complemento de volumen integrado de vSphere como aprovisionador.
Para ver el standard
StorageClass, haz lo siguiente:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get storageclass \ standard --output yaml
En el resultado, puede ver que standard
es la StorageClass predeterminada y que el aprovisionador es el complemento de volumen insertado de vSphere, kubernetes.io/vsphere-volume
. También puede ver el nombre de un almacén de datos de vSphere.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... labels: bundle.gke.io/component-name: admin-storage-class name: standard ... parameters: datastore: vsanDatastore provisioner: kubernetes.io/vsphere-volume ...
StorageClasses de clústeres de usuarios
En los clústeres de usuarios, hay un StorageClass llamado standard
y otro llamado standard-rwo
.
La standard-rwo
StorageClass se designa como la StorageClass predeterminada y
muestra el controlador CSI de vSphere como proveedor.
Para ver el standard-rwo
StorageClass, haz lo siguiente:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclass \ standard-rwo --output yaml
En el resultado, puedes ver que standard-rwo
es la StorageClass predeterminada y que el aprovisionador es el controlador de CSI para vSphere, csi.vsphere.vmware.com
. También puede ver la URL de un almacén de datos de vSphere:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... labels: bundle.gke.io/component-name: user-vsphere-csi-driver-addon ... name: standard-rwo ... parameters: datastoreURL: ds:///vmfs/volumes/vsan:52fb6ca22be2454e-e67f620175964a9f/ provisioner: csi.vsphere.vmware.com ...
Complementos de volumen de Kubernetes
Kubernetes incluye varios plugins de volumen integrados. Sin embargo, la mayoría de estos complementos de volumen in-tree están obsoletos (incluido el complemento de volumen in-tree de vSphere). Para obtener más información, consulta el proyecto de migración a CSI.
Migración de CSI para el controlador de almacenamiento de vSphere
Antes, el complemento de volumen de vSphere integrado era el proveedor de la StorageClass predeterminada en los clústeres de usuarios. Sin embargo, ahora el complemento de volumen de vSphere integrado está obsoleto y el controlador de CSI de vSphere es el proveedor de la StorageClass predeterminada en los clústeres de usuarios. Te recomendamos que uses el controlador de CSI para vSphere en lugar del complemento de volumen integrado.
A partir de la versión 1.15 de Google Distributed Cloud, la función de migración de CSI de Kubernetes está habilitada de forma predeterminada para el complemento de volumen de vSphere integrado. Esto significa que, si una carga de trabajo usa un volumen de vSphere integrado, todas las llamadas de operaciones de almacenamiento internas se redirigen automáticamente al controlador de CSI de vSphere.
Por ejemplo, supongamos que un PersistentVolumeClaim especifica la standard
StorageClasskubernetes.io/vsphere-volume
, que incluye el complemento de volumen interno de vSphere, standard
, como aprovisionador. De esta forma, cualquier carga de trabajo que utilice ese PersistentVolumeClaim redirigirá sus llamadas de operaciones de almacenamiento al controlador de CSI para vSphere, csi.vsphere.vmware.com
.
Comprobaciones preparatorias
Cuando creas o actualizas un clúster, se realizan comprobaciones previas para asegurarse de que tu entorno es adecuado para la migración de CSI.
Por ejemplo, las comprobaciones preparatorias:
- Comprueba que las versiones de vCenter y ESXi sean las adecuadas.
- Verifica que el controlador de CSI para vSphere esté habilitado si hay PersistentVolumes de vSphere en el árbol.
- Verifica que las StorageClasses de vSphere no tengan determinados parámetros que se ignoren después de la migración de CSI.
- Verifica las anotaciones de los PersistentVolumes y PersistentVolumeClaims creados de forma estática en el árbol que se requieren para la migración a CSI.
- Verifica que el clúster pueda ejecutar correctamente una carga de trabajo mediante un volumen de CSI aprovisionado por el controlador de CSI para vSphere.
Para obtener más información, consulta Ejecutar comprobaciones de solicitudes preparatorias.
Problemas conocidos
Hay varios problemas conocidos relacionados con el controlador de CSI para vSphere. Para obtener información y soluciones alternativas, consulta la sección Problemas conocidos de las notas de la versión 3.0 del controlador de CSI para VMware vSphere.
Completar la migración a CSI
Con la función de migración de CSI de Kubernetes habilitada de forma predeterminada en la versión 1.15, el
PersistentVolume
respaldado por el complemento de volumen de vSphere integrado sigue
funcionando en un entorno solo de CSI. Solo redirige las llamadas de operación del complemento integrado al complemento de CSI. Como la especificación de PersistentVolume
es inmutable, será la misma que la del complemento de volumen in-tree.
Por este motivo, el conjunto completo de funciones de CSI, como la expansión de volumen y las funciones de instantánea de volumen, no están disponibles para estos volúmenes. Para aprovechar estas funciones, la carga de trabajo con estado debe migrarse por completo a CSI. Para ello, debe volver a crear la especificación de recursos de Kubernetes con los campos de CSI. Hemos desarrollado una herramienta automatizada para ayudarte a migrar cargas de trabajo con estado a CSI sin que se produzca un tiempo de inactividad en las aplicaciones, lo que te permitirá usar todas las funciones de CSI.
Usar controladores de terceros
Si quieres aprovisionar volúmenes de almacenamiento que no sean almacenes de datos de vSphere, puedes crear una StorageClass en un clúster que utilice otro controlador de almacenamiento. Después, puedes configurar StorageClass como predeterminada del clúster o configurar tus cargas de trabajo para que usen StorageClass (ejemplo de StatefulSet).
Partners de almacenamiento
Nos hemos asociado con muchos proveedores de almacenamiento para certificar sus sistemas de almacenamiento con Google Distributed Cloud. Consulta la lista completa de partners de almacenamiento cualificados.
Expansión de volumen
Puedes aumentar el tamaño de un volumen persistente después de que se haya aprovisionado. Para ello, edita la solicitud de capacidad en PersistentVolumeClaim. Puedes hacer una expansión online mientras un pod usa el volumen o una expansión offline cuando el volumen no esté en uso.
En el caso del controlador de CSI para vSphere, la expansión sin conexión está disponible en las versiones de vSphere >= 7.0 y la expansión online está disponible en las versiones de vSphere >= 7.0 Update 2.
La standard-rwo
StorageClass asigna el valor allowVolumeExpansion
a true de forma predeterminada
para los clústeres recién creados que se ejecutan en >= vSphere 7.0. Puedes usar la expansión online y offline para los volúmenes que usen este StorageClass. En un clúster actualizado, como las StorageClasses no se modifican al actualizar el clúster, cuando se actualiza un clúster de la versión 1.7 a la 1.8, el ajuste allowVolumeExpansion
de standard-rwo
no se define, lo que significa que no se permite la expansión del volumen.
Para obtener más información sobre la expansión de volumen, consulta el artículo Usar la expansión de volumen.
Capturas de volúmenes de CSI
Puedes crear capturas de almacenamiento persistente mediante los recursos VolumeSnapshot y VolumeSnapshotClass. Para usar esta función en un volumen de CSI, el controlador de CSI debe admitir instantáneas de volumen y el contenedor auxiliar external-snapshotter
debe incluirse en la implementación del controlador de CSI.
Para obtener más información sobre las capturas de volumen, consulta el artículo Usar las capturas de volumen.
Los controladores de snapshots de CSI se implementan automáticamente al crear un clúster.
Limpieza de volúmenes
Cuando eliminas un clúster de usuarios, no se eliminan los volúmenes aprovisionados por el controlador de CSI para vSphere. Debes eliminar todos los volúmenes, PersistentVolumeClaims y StatefulSets antes de eliminar el clúster.
Solución de problemas
Consulta Solucionar problemas de almacenamiento.