Menu

Cette page a fait l'objet d'une traduction automatique et peut contenir des imperfections.

Partager des commentaires

Explication des Persistent Volume Claims Kubernetes

Sommaire

Partager cette page

Yifat Perry
Yifat Perry

Que sont les volumes persistants Kubernetes et les Persistent Volume Claims?

Un volume persistant (PV) Kubernetes est un objet qui permet aux pods d'accéder à un stockage persistant sur un périphérique de stockage, défini via un StorageClass Kubernetes. Contrairement aux volumes classiques, qui sont éphémères, les PV sont persistants et prennent en charge les cas d'utilisation d'applications avec état. Un PV est un objet ressource dans un cluster Kubernetes qui continue d'exister même après la destruction des pods qui l'utilisent.

Les volumes persistants (PV) doivent être demandés via des demandes de volume persistant (PVC), qui correspondent à des requêtes de stockage. Une PVC est essentiellement une demande de montage d’un PV répondant à certains critères sur un pod. Les PVC ne spécifient pas un PV particulier; elles indiquent plutôt quelle StorageClass le pod requiert. Les administrateurs peuvent définir des StorageClasses qui indiquent les propriétés des périphériques de stockage, telles que les performances, les niveaux de service et les politiques de back-end.

Un avantage majeur du modèle PVC dans Kubernetes est qu'il permet aux développeurs de demander dynamiquement des ressources de stockage, sans être conscients de l'implémentation des périphériques de stockage sous-jacents.

Contenu associé: Consultez notre guide sur Kubernetes StorageClass

Dans cet article

Persistent Volume Claims: provisionnement statique vs dynamique

Pour lier un pod à un PV, le pod doit comporter un montage de volume et un PVC. Ces déclarations permettent aux utilisateurs de monter des PV dans des pods sans connaître les détails de l'équipement de stockage sous-jacent.

Il existe deux options pour monter des PV sur un pod :

  • La configuration statique implique que les administrateurs créent manuellement des PV et définissent un StorageClass correspondant aux critères de ces PV. Lorsqu'un pod utilise un PVC qui spécifie le StorageClass, il accède à l'un de ces PV statiques.
  • La configuration dynamique intervient lorsqu'aucun PV statique ne correspond au PVC. Dans ce cas, le cluster Kubernetes provisionne un nouveau PV en fonction des définitions StorageClass.

Contenu associé: Consultez notre guide sur Kubernetes shared storage

Création d'une revendication de volume persistant et liaison à un volume persistant

Ce tutoriel explique le fonctionnement des PV et des PVC. Il s'agit d'un résumé du tutoriel disponible dans la documentation Kubernetes.

1. Configuration d'un nœud
Configurez un cluster Kubernetes avec un seul nœud et assurez-vous que la ligne de commandes kubectl est connectée au plan de contrôle. Créez un répertoire sur le nœud comme ceci :

sudo mkdir /mnt/data

Créez un fichier index.htmldans le répertoire.

2. Création d'un volume persistant
Créez un fichier YAML comme le suivant pour définir un PV.

k8s pvc 1

Exécutez cette commande pour créer le PV sur votre nœud :

kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml

3. Création d'une revendication de volume persistant et liaison à un volume persistant
Créez une PVC qui nécessite un PV, sous réserve des conditions suivantes pour correspondre au PV que vous avez créé précédemment :

  • 3 Go ou plus de capacité de stockage
  • Activer l'accès en lecture/écriture
k8s pvc 2

Exécutez cette commande pour appliquer le PVC :

kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml

Lorsque vous créez une revendication de volume persistant, le plan de contrôle Kubernetes trouve le PV approprié. S'il le trouve, il lie le PVC au PV.

Vérifiez l'état du PV créé précédemment en exécutant :

kubectl get pv task-pv-volume

Si la liaison réussit, le résultat devrait ressembler à ceci :

k8s pvc 3

4. Création d'un pod et montage de la demande de volume persistant
Enfin, créez un pod qui utilise le PVC. Exécutez le pod avec l'image NGINX, en spécifiant le PVC que vous avez créé auparavant dans la section correspondante de la spécification du pod :

k8s pvc 4

Utilisez une commande bash pour installer curl dans votre pod, et exécutez cette commande:

curl http://localhost/

Le résultat doit afficher le contenu du fichier index.html créé à l'étape 1. Il doit indiquer que le nouveau pod peut accéder aux données du PV via le PVC.

Erreurs PVC Kubernetes: causes courantes et résolution [C]

L'utilisation des PVC Kubernetes peut s'avérer complexe, entraînant des erreurs parfois difficiles à diagnostiquer et à résoudre. Les erreurs de PVC sont généralement liées à trois grandes catégories : problèmes de création des PV, problèmes de provisionnement des PV et modifications des spécifications des PV ou des PVC.

Les erreurs les plus courantes liées aux PVC sont FailedAttachVolume, FailedMount et CrashLoopBackOff.

FailedAttachVolume and FailedMount Erreurs

Ces deux erreurs indiquent qu'un pod n'a pas pu monter un PV. La différence est que FailedAttachVolumese produit lorsqu'un volume ne parvient pas à se détacher d'un nœud précédent, et FailedMountse produit lorsqu'un volume ne parvient pas à se monter sur le chemin requis.

Ces deux erreurs peuvent avoir de nombreuses causes, notamment une panne sur le nouveau nœud, trop de disques attachés au nouveau nœud, une erreur de partitionnement réseau et une panne des périphériques de stockage sur le nœud précédent.

Diagnostic du problème

Pour diagnostiquer la cause de problèmes tels que FailedAttachVolume et FailedMount, exécutez la commande describe pod et recherchez dans la section Events le message indiquant une erreur. Le message devrait également fournir des informations sur la cause.

Résolution du problème

Kubernetes ne peut pas résoudre automatiquement les erreurs FailedAttachVolume et FailedMount, vous devrez donc gérer le problème manuellement:

  • Si la cause de l'erreur est Failure to Detach- utilisez l'interface du périphérique de stockage pour détacher le volume manuellement.
  • Si l’erreur est Failure to Attach or Mount, vérifiez la présence d’un problème de partitionnement réseau ou d’un chemin réseau incorrect. Si ce n’est pas le cas, essayez de faire en sorte que Kubernetes programme le pod sur un autre nœud, ou recherchez et corrigez le problème sur le nouveau nœud.

CrashLoopBackOff Errors resulting from the PersistentVolumeClaim

CrashLoopBackOff indique qu'un pod a planté, a redémarré, puis a planté à nouveau de manière répétée. Dans certains cas, cette erreur survient à la suite d'une corruption de PersistentVolumeClaims.

Diagnostic du problème

Pour identifier si une erreur CrashLoopBackOff est due à un PVC, vérifiez les journaux de l'instance de conteneur précédente qui a monté le PV, vérifiez les journaux de déploiement et, si nécessaire, exécutez un shell sur le conteneur pour identifier pourquoi il plante.

Résolution du problème

Si CrashLoopBackOff est le résultat d’un problème avec un PVC, essayez les étapes suivantes:

  1. Réduisez le déploiement à 0 instances pour activer le débogage.
  2. Obtenez l'identifiant du PVC défaillant à l'aide de cette requête:
    kubectl get deployment -o jsonpath="{.spec.template.spec.volumes[*].persistentVolumeClaim.claimName}" failed-deployment 
    
  3. Créez un nouveau pod pour le débogage et exécutez un shell à l'aide de cette commande :
    exec -it volume-debugger sh
    
  4. Identifiez le volume actuellement monté dans le répertoire /datadirectory et corrigez le problème qui provoque le crash du pod.
  5. Quittez le shell, supprimez le pod de débogage et ramenez le déploiement au nombre de réplicas requis.

Optimisation du stockage Kubernetes avec Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, la solution de gestion du stockage de pointe pour les entreprises, offre des services de gestion du stockage sécurisés et éprouvés sur AWS, Azure et Google Cloud. La capacité de Cloud Volumes ONTAP peut évoluer jusqu'à plusieurs pétaoctets et prend en charge différents cas d’usage tels que les services de fichiers, les bases de données, DevOps ou toute autre charges de travail exigeantes, avec un ensemble solide de fonctionnalités, notamment la haute disponibilité, la protection des données, les efficacités du stockage, l’intégration Kubernetes, et plus encore.

En particulier, Cloud Volumes ONTAP prend en charge le provisionnement et la gestion des volumes persistants Kubernetespour les workloads conteneurisés.

Découvrez comment Cloud Volumes ONTAP contribue à relever les défis des applications conteneurisées dans ces études de cas sur les charges de travail Kubernetes avec Cloud Volumes ONTAP.

Drift chat loading