Ce document explique comment augmenter de manière dynamique la capacité de stockage des volumes Managed Lustre pour vos charges de travail avec état dans Google Kubernetes Engine (GKE) sans perturber vos applications.
Par exemple, si vos jobs d'entraînement d'IA/ML de longue durée ont des besoins de stockage dynamiques et imprévisibles, activez l'extension de volume Managed Lustre pour augmenter la capacité de stockage de votre PersistentVolume (PV) Managed Lustre existant.
Ce document s'adresse aux administrateurs et opérateurs de plate-forme, aux ingénieurs DevOps, aux administrateurs de stockage et aux ingénieurs en machine learning (ML) qui gèrent le stockage des charges de travail avec état sur GKE.
Lorsque vous augmentez la capacité d'un volume, vos coûts augmentent en fonction de la nouvelle capacité, conformément à la tarification standard deCloud de Confiance by S3NS Managed Lustre.
Avant de commencer
Conditions requises
Assurez-vous de remplir les conditions suivantes :
- Vous devez disposer d'un cluster GKE version 1.35.0-gke.2331000 ou ultérieure.
- Vous devez activer le pilote CSI Managed Lustre sur un cluster existant. Le pilote est désactivé par défaut dans les clusters Standard et Autopilot.
Limites
- Vous pouvez uniquement augmenter la taille d'un volume existant, et non la réduire.
- Vous ne pouvez pas utiliser l'expansion de volume avec le mode d'accès
ReadOnlyMany. - Lorsque vous redimensionnez des volumes Lustre, respectez les limites de capacité minimale et maximale, ainsi que les tailles de pas définies par le niveau de performance de votre volume. Pour plus d'informations, consultez la section Considérations sur les performances.
- Spécifiez les tailles des volumes Lustre en Gio sous forme de multiples de 1 000. Kubernetes traduit les unités telles que Ti en valeurs binaires (par exemple, 18 Ti est interprété comme 18 432 Gio), ce qui entraîne le rejet de la requête par l'API Lustre.
Activer l'expansion de volume pour une StorageClass
Vérifiez si votre StorageClass est compatible avec l'expansion de volume :
kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Remplacez
STORAGECLASS_NAMEpar le nom de votre StorageClass.Si le résultat de la commande ne renvoie rien ou renvoie
false, vous devez explicitement mettre à jour la configuration StorageClass pour autoriser l'extension.Ouvrez la configuration StorageClass pour la modifier :
kubectl edit storageclass STORAGECLASS_NAMEDans l'éditeur, ajoutez le champ
allowVolumeExpansion: trueà votre configuration StorageClass :apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lustre-sc provisioner: lustre.csi.storage.gke.io ... allowVolumeExpansion: true
Développer un PersistentVolumeClaim
Pour lancer l'expansion de volume, modifiez votre PersistentVolumeClaim (PVC) afin de demander une augmentation de la taille du volume.
- Identifiez la nouvelle taille valide pour l'extension, comme décrit dans Déterminer les tailles d'extension valides.
Ouvrez la configuration de la PVC pour la modifier :
kubectl edit pvc PVC_NAMERemplacez
PVC_NAMEpar le nom de votre PVC.Dans l'éditeur, mettez à jour le champ
spec.resources.requests.storageavec la taille d'expansion valide. Par exemple, pour étendre un volume de9000Già18000Gi, modifiez le champstoragecomme suit :spec: accessModes: - ReadWriteOnce resources: requests: storage: 18000Gi # Changed from 9000Gi
Vérifier l'extension du volume
Surveillez la progression de l'extension en examinant les événements du PVC :
kubectl describe pvc PVC_NAMELes événements suivants dans la sortie du PVC indiquent la progression ou le résultat actuel de la requête d'extension de volume :
ExternalExpanding: indique que Kubernetes attend queexternal-resizerétende la PVC.Resizing: indique que l'opération de redimensionnement est en cours. Cette opération peut prendre jusqu'à 90 minutes pour les augmentations de capacité plus importantes.VolumeResizeSuccessful: confirme que le volume a bien été étendu.VolumeResizeFailed: indique qu'une erreur s'est produite. Le message d'événement contient des détails de l'API Google Cloud Managed Lustre. Cet état peut être temporaire et se résoudre de lui-même.
Une fois l'extension terminée, vérifiez la configuration mise à jour de la PVC :
kubectl get pvc PVC_NAME -o yamlAssurez-vous que le champ
status.capacityreflète la nouvelle taille incrémentée.
Si vous rencontrez des problèmes lors du processus d'extension, consultez Dépannage.
Déterminer les tailles d'expansion valides
Pour déterminer la nouvelle taille de votre volume, commencez par identifier son niveau de performance et la taille de pas correspondante.
Identifier le niveau de performances du volume
Vous pouvez trouver le niveau de performances de votre volume à l'aide de l'une des options suivantes :
StorageClass
Exécutez la commande suivante et recherchez la valeur perUnitStorageThroughput (par exemple, 1000). Cette valeur indique le niveau de performances en Mo/s par Tio.
kubectl get sc STORAGECLASS_NAME -o yaml
Remplacez STORAGECLASS_NAME par le nom de votre StorageClass.
Instance Lustre
Identifiez le niveau de performances de votre volume en vérifiant directement les propriétés de l'instance Managed Lustre sous-jacente :
Recherchez le nom du PV associé à votre PVC :
kubectl get pvc PVC_NAMERemplacez
PVC_NAMEpar le nom de votre PVC.Le résultat renvoyé ressemble à ceci : Notez le nom du PV dans la colonne
VOLUME, par exemplepv-lustre.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-lustre Bound pv-lustre 9000Gi RWX lustre-rwx <unset> 26mRecherchez l'emplacement et le nom d'instance du volume dans le champ
volumeHandle:kubectl get pv PV_NAME -o yamlRemplacez
PV_NAMEpar le nom du PV de l'étape précédente.La valeur
volumeHandleest au formatPROJECT_ID/LOCATION/INSTANCE_NAME. Notez les valeursINSTANCE_NAMEetLOCATIONpour l'étape suivante.Vérifiez les propriétés du niveau de performances en décrivant l'instance Managed Lustre :
gcloud lustre instances describe INSTANCE_NAME --location=LOCATIONRemplacez
INSTANCE_NAMEetLOCATIONpar les valeurs de l'étape précédente.Dans le résultat, recherchez le champ
perUnitStorageThroughput. Cette valeur indique le niveau de performances en Mo/s par Tio.
Limites de capacité et tailles de pas
Une fois que vous avez identifié le niveau de performances, reportez-vous au tableau suivant pour connaître les limites de capacité associées et la taille de pas requise.
Niveau (perUnitStorageThroughput) |
Capacité minimale | Capacité maximale | Taille de pas |
|---|---|---|---|
| 1 000 MBps par Tio | 9 000 Gio | 954 000 Gio (~1 Pio) | 9 000 Gio |
| 500 MBps par Tio | 18 000 Gio | 1 908 000 Gio (~2 Pio) | 18 000 Gio |
| 250 MBps par Tio | 36 000 Gio | 3 816 000 Gio (~4 Pio) | 36 000 Gio |
| 125 MBps par Tio | 72 000 Gio | 7 632 000 Gio (~8 Pio) | 72 000 Gio |
Les volumes doivent être augmentés en fonction de la taille de pas attribuée à leur niveau. Toute augmentation de capacité doit être un multiple de cette taille de pas spécifique. Par exemple, si votre volume de niveau 1 000 MBps a une capacité de 9 000 Gio, vous pouvez l'augmenter à 18 000 Gio, 27 000 Gio et d'autres multiples.
Dépannage
Cette section fournit des solutions aux problèmes courants que vous pouvez rencontrer lorsque vous étendez des volumes Lustre.
L'expansion échoue avec une erreur "Argument non valide"
Problème constaté
- La PVC passe à l'état
Resizing, mais échoue ensuite. - Lorsque vous exécutez la commande
kubectl describe pvc PVC_NAME, une erreur semblable àVolumeResizeFailed: rpc error: code = InvalidArgument desc = ...s'affiche.
Cause
Cette erreur signifie généralement que la taille de stockage demandée n'est pas valide pour le niveau de performances du volume Lustre pour l'une des raisons suivantes :
- La taille demandée n'est pas un multiple de la taille de pas requise pour le niveau.
- La taille demandée est inférieure à la capacité minimale ou supérieure à la capacité maximale du niveau.
Solution
- Consultez Limites de capacité et tailles de pas pour connaître les tailles de pas et les limites de capacité valides pour le niveau de performances de votre volume.
- Modifiez à nouveau la PVC pour demander une taille de stockage valide qui respecte la taille de pas et les limites de capacité.
L'expansion échoue avec une "erreur interne"
Problème constaté
- Le redimensionnement de la PVC échoue.
- Lorsque vous exécutez la commande
kubectl describe pvc PVC_NAME, un événementVolumeResizeFailedpeut s'afficher avec un message d'erreur contenantcode = Internal.
Cause
Cette erreur indique un problème avec le service Managed Lustre sous-jacent.
Solution
- Réessayez d'effectuer l'extension en appliquant à nouveau le fichier manifeste PVC avec la nouvelle taille demandée. Cela peut résoudre les problèmes temporaires de backend.
- Si la nouvelle tentative échoue, contactez Cloud Customer Care.
L'extension est bloquée à l'état "Redimensionnement"
Problème constaté
- La PVC reste à l'état
Resizingpendant une période prolongée (plus de 30 minutes pour les petites extensions ou plus de 90 minutes pour les extensions plus importantes). - Un événement
VolumeResizeFailedpeut s'afficher avec un message d'erreurDEADLINE_EXCEEDED.
Cause
Ce problème peut se produire lors d'augmentations de capacité importantes, qui peuvent prendre jusqu'à 90 minutes. Le composant csi-external-resizer peut expirer en attendant que l'API Google Cloud Managed Lustre réponde, même si l'opération d'extension sous-jacente est toujours en cours.
Solution
csi-external-resizerrelance automatiquement l'opération après un délai d'attente. Continuez à surveiller les événements PVC pour un événementVolumeResizeSuccessful.- Si la PVC reste à l'état
Resizingpendant plus de 90 minutes, contactez Cloud Customer Care.
L'extension ne démarre pas ou est bloquée à l'état ExternalExpanding
Problème constaté
- Vous mettez à jour le champ
spec.resources.requests.storagedans votre PVC, mais l'état de la PVC ne passe pas àResizing. - Lorsque vous exécutez la commande
kubectl describe pvc PVC_NAME, le journal des événements n'affiche que l'étatExternalExpandinget ne passe pas à l'étatResizing:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalExpanding 21m (x2 over 58m) volume_expand waiting for an external controller to expand this PVC
Cause
Cela indique généralement l'un des problèmes suivants :
- La StorageClass associée au PVC n'autorise pas l'expansion de volume.
- Il y a un problème avec le conteneur side-car
csi-external-resizer, qui est le composant responsable du lancement de l'expansion.
Solution
Vérifiez la configuration de StorageClass et assurez-vous que le champ
allowVolumeExpansion: trueest défini :kubectl get sc STORAGECLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Si
allowVolumeExpansionest manquant ou défini surfalse, mettez à jour la StorageClass pour autoriser l'expansion de volume.Si la StorageClass est configurée correctement, le problème est probablement lié aux composants du plan de contrôle GKE qui gèrent l'opération de redimensionnement. Contactez Cloud Customer Care pour obtenir de l'aide.
Échec de l'extension en raison d'un problème de quota ou de capacité
Problème constaté
- Le redimensionnement du PVC échoue et un événement
VolumeResizeFaileds'affiche sur le PVC. - Lorsque vous exécutez la commande
kubectl describe pvc PVC_NAME, le message d'événement du backend Managed Lustre indique un problème de quota ou de capacité.
Cause
L'extension valide demandée ne peut pas être effectuée, car elle dépasse la capacité ou le quota global disponible pour le service Managed Lustre dans votre projet ou votre région.
Solution
- Modifiez à nouveau votre PVC et demandez une augmentation de l'espace de stockage plus faible.
- Contactez l'administrateur Cloud de Confiance by S3NS de votre organisation pour demander une augmentation des quotas ou de la capacité globale du service Lustre pour votre projet.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce document ne soient facturées sur votre compte Cloud de Confiance by S3NS , supprimez la PVC. Cette opération supprime également le PV associé et l'instance Managed Lustre sous-jacente si reclaimPolicy est défini sur Delete.
kubectl delete pvc PVC_NAME
Remplacez PVC_NAME par le nom de votre PVC.
Étapes suivantes
- En savoir plus sur le stockage pour les clusters GKE
- Consultez la documentation sur les volumes persistants et le provisionnement GKE.