3.2. Cycle de vie d'un volume et d'une revendication
Les PV sont des ressources dans le cluster. Les PVC sont des demandes pour ces ressources et agissent également comme des contrôles de réclamation pour la ressource. L'interaction entre les PV et les PVC a le cycle de vie suivant.
3.2.1. Mise à disposition d'un espace de stockage
En réponse aux demandes d'un développeur défini dans un PVC, un administrateur de cluster configure un ou plusieurs provisionneurs dynamiques qui fournissent du stockage et un PV correspondant.
Un administrateur de cluster peut également créer à l'avance un certain nombre de PV qui contiennent les détails du stockage réel disponible pour l'utilisation. Les PV existent dans l'API et peuvent être utilisés.
3.2.2. Lier les créances
Lorsque vous créez un PVC, vous demandez une quantité spécifique de stockage, vous spécifiez le mode d'accès requis et vous créez une classe de stockage pour décrire et classer le stockage. La boucle de contrôle du maître surveille les nouveaux PVC et lie le nouveau PVC à un PV approprié. S'il n'existe pas de PV approprié, un provisionneur de la classe de stockage en crée un.
La taille de tous les PV peut dépasser la taille de votre PVC. Cela est particulièrement vrai pour les PV provisionnés manuellement. Pour minimiser l'excès, OpenShift Container Platform se lie au plus petit PV qui correspond à tous les autres critères.
Les demandes restent indéfiniment non liées si un volume correspondant n'existe pas ou ne peut pas être créé avec un provisionneur disponible desservant une classe de stockage. Les demandes sont liées au fur et à mesure que des volumes correspondants sont disponibles. Par exemple, un cluster avec de nombreux volumes de 50Gi provisionnés manuellement ne correspondrait pas à un PVC demandant 100Gi. Le PVC peut être lié lorsqu'un PV de 100Gi est ajouté au cluster.
3.2.3. Utiliser des cosses et des PV revendiquées
Les modules utilisent les revendications comme des volumes. Le cluster inspecte la revendication pour trouver le volume lié et monte ce volume pour un pod. Pour les volumes qui prennent en charge plusieurs modes d'accès, vous devez spécifier le mode qui s'applique lorsque vous utilisez la revendication comme volume dans un module.
Une fois que vous avez une revendication et que cette revendication est liée, le PV lié vous appartient aussi longtemps que vous en avez besoin. Vous pouvez planifier des pods et accéder aux PV revendiqués en incluant persistentVolumeClaim
dans le bloc de volumes du pod.
Si vous attachez des volumes persistants qui ont un nombre élevé de fichiers à des pods, ces pods peuvent échouer ou prendre beaucoup de temps à démarrer. Pour plus d'informations, voir Lors de l'utilisation de volumes persistants avec un nombre élevé de fichiers dans OpenShift, pourquoi les pods ne démarrent-ils pas ou prennent-ils un temps excessif pour atteindre l'état "Ready" ?
3.2.4. Protection des objets de stockage en cours d'utilisation
La fonction de protection des objets de stockage en cours d'utilisation garantit que les PVC utilisés activement par un pod et les PV liés aux PVC ne sont pas supprimés du système, ce qui pourrait entraîner une perte de données.
La protection des objets de stockage en cours d'utilisation est activée par défaut.
Un PVC est utilisé activement par un pod lorsqu'il existe un objet Pod
qui utilise le PVC.
Si un utilisateur supprime un PVC qui est utilisé activement par un pod, le PVC n'est pas supprimé immédiatement. La suppression du PVC est reportée jusqu'à ce que le PVC ne soit plus utilisé activement par aucun pod. De même, si un administrateur de cluster supprime un PV lié à un PVC, le PV n'est pas supprimé immédiatement. La suppression de la PV est reportée jusqu'à ce que la PV ne soit plus liée à un PVC.
3.2.5. Libération d'un volume persistant
Lorsque vous avez terminé avec un volume, vous pouvez supprimer l'objet PVC de l'API, ce qui permet la récupération de la ressource. Le volume est considéré comme libéré lorsque la demande est supprimée, mais il n'est pas encore disponible pour une autre demande. Les données du demandeur précédent restent sur le volume et doivent être traitées conformément à la politique.
3.2.6. Politique de récupération des volumes persistants
La politique de récupération d'un volume persistant indique au cluster ce qu'il doit faire du volume après sa libération. La politique de récupération d'un volume peut être Retain
, Recycle
, ou Delete
.
-
Retain
permet la récupération manuelle de la ressource pour les plugins de volume qui la prennent en charge. -
Recycle
recycle le volume dans le pool de volumes persistants non liés une fois qu'il est libéré de sa réclamation.
La politique de récupération de Recycle
est obsolète dans OpenShift Container Platform 4. Le provisionnement dynamique est recommandé pour une fonctionnalité équivalente et meilleure.
-
Delete
reclaim policy supprime à la fois l'objetPersistentVolume
d'OpenShift Container Platform et la ressource de stockage associée dans l'infrastructure externe, comme AWS EBS ou VMware vSphere.
Les volumes approvisionnés dynamiquement sont toujours supprimés.
3.2.7. Récupération manuelle d'un volume persistant
Lorsqu'une demande de volume persistant (PVC) est supprimée, le volume persistant (PV) existe toujours et est considéré comme "libéré". Cependant, le PV n'est pas encore disponible pour une autre demande, car les données du demandeur précédent restent sur le volume.
Procédure
Pour récupérer manuellement le PV en tant qu'administrateur de cluster :
Supprimer le PV.
oc delete pv <pv-name> $ oc delete pv <pv-name>
La ressource de stockage associée dans l'infrastructure externe, telle qu'un volume AWS EBS, GCE PD, Azure Disk ou Cinder, existe toujours après la suppression du PV.
- Nettoyer les données sur le support de stockage associé.
- Supprimer le bien de stockage associé. Pour réutiliser le même bien de stockage, il est possible de créer un nouveau PV avec la définition du bien de stockage.
Le PV récupéré est maintenant disponible pour être utilisé par un autre PVC.
3.2.8. Modification de la politique de récupération d'un volume persistant
Pour modifier la politique de récupération d'un volume persistant :
Dressez la liste des volumes persistants de votre cluster :
$ oc get pv
Exemple de sortie
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 10s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 6s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim3 manual 3s
Choisissez l'un de vos volumes persistants et modifiez sa politique de récupération :
$ oc patch pv <nom-de-votre-pv> -p '{"spec":{"persistentVolumeReclaimPolicy":\N-"Retain"}''
Vérifiez que le volume persistant que vous avez choisi a la bonne politique :
$ oc get pv
Exemple de sortie
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b6efd8da-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim1 manual 10s pvc-b95650f8-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Delete Bound default/claim2 manual 6s pvc-bb3ca71d-b7b5-11e6-9d58-0ed433a7dd94 4Gi RWO Retain Bound default/claim3 manual 3s
Dans la sortie précédente, le volume lié à la revendication
default/claim3
a maintenant une politique de récupérationRetain
. Le volume ne sera pas automatiquement supprimé lorsqu'un utilisateur supprimera la revendicationdefault/claim3
.