Il est recommandé de placer les données du pod dans un volume persistant afin que les données soient disponibles même après l'arrêt du pod. Dans Kubernetes (k8s), les volumes persistants basés sur NFS peuvent être utilisés à l'intérieur des pods. Dans cet article, nous apprendrons comment configurer le volume persistant et la revendication de volume persistant, puis nous discuterons de la manière dont nous pouvons utiliser le volume persistant via son nom de revendication dans les pods k8s.
Je suppose que nous avons un cluster k8s fonctionnel et un serveur NFS. Voici les détails de la configuration du laboratoire,
- IP du serveur NFS =192.168.1.40
- Partage NFS =/opt/k8s-pods/data
- Cluster K8s = un nœud maître et deux nœuds de travail
Remarque : Assurez-vous que le serveur NFS est accessible à partir des noeuds worker et essayez de monter le partage nfs sur chaque worker une fois pour le test.
Créez un fichier dans le partage nfs car nous monterons ce partage dans le pod nginx plus tard dans l'article.
[[email protected] ~]$ echo "Bonjour, stockage NFS NGINX"> /opt/k8s-pods/data/index.html
Configurer la PV basée sur NFS (volume persistant)
Pour créer un volume persistant basé sur NFS dans K8s, créez le fichier yaml sur le nœud maître avec le contenu suivant,
[[email protected] ~]$ vim nfs-pv.yamlapiVersion :v1kind :PersistentVolumemetadata : nom :nfs-pvspec : capacité : stockage :10 Gi volumeMode :Filesystem accessModes : - ReadWriteMany persistentVolumeReclaimPolicy :Recycle storageClassName :nfs mountOptions : - hard - nfsvers=4.1 nfs : chemin :/opt/k8s-pods/data serveur :192.168.1.40
Enregistrez et quittez le fichier
Créez maintenant un volume persistant à l'aide du fichier yaml créé ci-dessus, exécutez
[[email protected] ~]$ kubectl create -f nfs-pv.yamlpersistentvolume/nfs-pv créé[[email protected] ~]$
Exécutez la commande kubectl suivante pour vérifier l'état du volume persistant
[[e-mail protégé] ~] $ kubectl get pvname modes d'accès à la capacité de récupération du statut de politique de la politique storageclass raison amenfs-pv 10gi rwx recycler disponible NFS 20S [[e-mail protégé] ~] $
La sortie ci-dessus confirme que le PV a été créé avec succès et qu'il est disponible.
Configurer la revendication de volume persistant
Pour monter un volume persistant dans un pod, nous devons spécifier sa demande de volume persistant. Alors, créons une revendication de volume persistant en utilisant le fichier yaml suivant
[[email protected] ~]$ vi nfs-pvc.yamlapiVersion : v1kind :PersistentVolumeClaimmetadata : nom :nfs-pvcspec : storageClassName :nfs accessModes : - ReadWriteMany ressources : requests : stockage :10 Gi
Enregistrez et quittez le fichier.
Exécutez la commande kubectl ci-dessous pour créer pvc en utilisant le fichier yaml ci-dessus,
[[email protected] ~]$ kubectl create -f nfs-pvc.yamlpersistentvolumeclaim/nfs-pvc créé[[email protected] ~]$
Après l'exécution ci-dessus, le plan de contrôle recherchera un volume persistant qui satisfait à l'exigence de réclamation avec le même nom de classe de stockage, puis il liera la réclamation au volume persistant, l'exemple est illustré ci-dessous :
[[Email Protected] ~] $ kubectl get pvc nfs-pvcname Volume Volume Capacity Access modes storageclass agenfs-pvc bound nfs-pv 10gi rwx nfs 3m54s [[e-mail protégé] ~] $ [[e-mail protégé] ~] $ KUBECTL GET PV NFS-PVNAME MODES D'ACCÈS DE CAPPACITÉ RECHERCHE POLITIQUE POLITIQUE PLACE STORAGECLASS Raison AGENFS-PV 10GI RWX Recycle Bound / NFS-PVC NFS 18M [[Email Protected] ~] $
La sortie ci-dessus confirme que la revendication (nfs-pvc) est liée au volume persistant (nfs-pv).
Nous sommes maintenant prêts à utiliser le volume persistant basé sur nfs à l'intérieur des pods.
Utiliser un volume persistant basé sur NFS dans un pod
Créez un pod nginx en utilisant sous le fichier yaml, il montera la revendication de volume persistant sur '/usr/share/nginx/html'
[[email protected] ~]$ vi nfs-pv-podapiVersion :v1kind :Podmetadata : nom :nginx-pv-podspec : volumes : - nom :nginx-pv-storage persistentVolumeClaim : claimName :nfs-pvc containers : - nom :nginx image :nginx ports : - containerPort :80 nom :"nginx-server" volumeMounts : - mountPath :"/usr/share/nginx/html" nom :nginx-pv-storage
Enregistrez et fermez le fichier.
Créez maintenant le pod en utilisant le fichier yaml ci-dessus, exécutez
[[email protected] ~]$ kubectl create -f nfs-pv-pod.yamlpod/nginx-pv-pod created[[email protected] ~]$[[email protected] ~]$ kubectl get pod nginx- PV-POD -O Widename Ready Status Restarts Age Node IP Node Node Node Gatesngginx-PV-POD 1/1 En fonctionnant 0 66S 172.16.140.28 K8S-LA LEWER-2[[Email Protected] ~] $ Remarque : Pour obtenir plus de détails sur le pod, kubectl describe pod
La sortie des commandes ci-dessus confirme que le pod a été créé avec succès. Essayez maintenant d'accéder à la page nginx à l'aide de la commande curl
[[email protected] ~]$ curl http://172.16.140.28Bonjour, NFS Storage NGINX[[email protected] ~]$Parfait, la sortie de la commande curl ci-dessus confirme que le volume persistant est monté correctement à l'intérieur du pod car nous obtenons le contenu du fichier index.html qui est présent sur le partage NFS.
Ceci conclut l'article, je pense que vous avez une idée de base sur la façon de configurer et d'utiliser le volume persistant basé sur NFS dans les pods Kubernetes.
Lire aussi :Comment configurer le cluster Kubernetes (k8s) en haute disponibilité avec Kubeadm
Lire aussi :Comment installer et utiliser Helm dans Kubernetes