Es wird empfohlen, die Daten des Pods in einem persistenten Volume zu platzieren, damit die Daten auch nach Beendigung des Pods verfügbar sind. In Kubernetes (k8s) können NFS-basierte persistente Volumes innerhalb der Pods verwendet werden. In diesem Artikel werden wir lernen, wie man persistentes Volume und persistente Volume-Beanspruchung konfiguriert und dann diskutieren, wie wir das persistente Volume über seinen Claim-Namen in k8s-Pods verwenden können.
Ich gehe davon aus, dass wir einen funktionsfähigen k8s-Cluster und NFS-Server haben. Im Folgenden finden Sie Details zur Laboreinrichtung,
- NFS-Server-IP =192.168.1.40
- NFS-Freigabe =/opt/k8s-pods/data
- K8s-Cluster =Ein Master- und zwei Worker-Knoten
Hinweis: Stellen Sie sicher, dass der NFS-Server von den Worker-Knoten aus erreichbar ist, und versuchen Sie einmal, die NFS-Freigabe auf jedem Worker zu Testzwecken einzuhängen.
Erstellen Sie eine -Datei innerhalb der nfs-Freigabe, da wir diese Freigabe später im Artikel im nginx-Pod bereitstellen werden.
[[email protected] ~]$ echo "Hallo, NFS Storage NGINX"> /opt/k8s-pods/data/index.html
Konfigurieren Sie NFS-basiertes PV (Persistent Volume)
Um ein NFS-basiertes persistentes Volume in K8s zu erstellen, erstellen Sie die yaml-Datei auf dem Master-Knoten mit folgendem Inhalt:
[[email protected] ~]$ vim nfs-pv.yamlapiVersion:v1kind:PersistentVolumemetadata: name:nfs-pvspec: capacity: storage:10Gi volumeMode:Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy:Recycle storageClassName:nfs mountOptions: - hard - nfsvers=4.1 nfs: Pfad:/opt/k8s-pods/data Server:192.168.1.40
Speichern und beenden Sie die Datei
Erstellen Sie nun ein persistentes Volume mit der oben erstellten Yaml-Datei und führen Sie es aus
[[email protected] ~]$ kubectl create -f nfs-pv.yamlpersistentvolume/nfs-pv created[[email protected] ~]$
Führen Sie den folgenden kubectl-Befehl aus, um den Status des persistenten Volumes zu überprüfen
[[E-Mail geschützt] ~] $ kubectl erhalten PVName-Kapazitätszugriffsmodi Reclaim Richtlinienstatus Antrag StorageClass Grund AGENFS-PV 10GI RWX Recycle verfügbar NFS 20S [[E-Mail-Protected] ~] $
Die obige Ausgabe bestätigt, dass PV erfolgreich erstellt wurde und verfügbar ist.
Persistent Volume Claim konfigurieren
Um ein persistentes Volume in einem Pod bereitzustellen, müssen wir seinen Anspruch auf ein persistentes Volume angeben. Lassen Sie uns also mithilfe der folgenden Yaml-Datei einen Anspruch auf ein dauerhaftes Volume erstellen
[[email protected] ~]$ vi nfs-pvc.yamlapiVersion:v1kind:PersistentVolumeClaimmetadata: name:nfs-pvcspec: storageClassName:nfs accessModes: - ReadWriteMany resources: requests: storage:10Gi
Datei speichern und beenden.
Führen Sie den folgenden kubectl-Befehl aus, um pvc mit der obigen yaml-Datei zu erstellen,
[[email protected] ~]$ kubectl create -f nfs-pvc.yamlpersistentvolumeclaim/nfs-pvc created[[email protected] ~]$
Nach der obigen Ausführung sucht die Steuerungsebene nach einem persistenten Volume, das die Anspruchsanforderung mit demselben Speicherklassennamen erfüllt, und bindet dann den Anspruch an ein persistentes Volume, das Beispiel ist unten gezeigt:
[[E-Mail geschützt] ~] $ kubectl erhalten PVC NFS-PVCNAME STATUS-VORTELUNG CAPAPITY CAPAPITY CAPAPITY CAPAPITY STORAGECLASS AGENFS-PVC BOND NFS-PV 10GI RWX NFS 3M54S [[E-Mail Protected] ~] $ [[E-Mail-Protected] ~] ~ $] $ kubectl GET PV NFS-PVNAME-Kapazitätszugriffsmodi Rückgewinnung von Richtlinienstatusansprüchen StorageClass Gründe AGENFS-PV 10GI RWX Recycle Banden Standard-Standard/NFS-PVC NFS 18M [[E-Mail geschützt] ~] $
Die obige Ausgabe bestätigt, dass der Claim (nfs-pvc) an das persistente Volume (nfs-pv) gebunden ist.
Jetzt sind wir bereit, nfs-basierte persistente Volumes neben den Pods zu verwenden.
NFS-basiertes Persistent Volume in einem Pod verwenden
Erstellen Sie einen nginx-Pod mit der folgenden yaml-Datei. Er stellt den persistenten Volume-Claim auf „/usr/share/nginx/html“
bereit[[email protected] ~]$ vi nfs-pv-podapiVersion:v1kind:Podmetadata: name:nginx-pv-podspec: volume: - name:nginx-pv-storage persistentVolumeClaim: claimName:nfs-pvc container: - name:nginx image:nginx ports: - containerPort:80 name:"nginx-server" volumeMounts: - mountPath:"/usr/share/nginx/html" name:nginx-pv-storage
Speichern und schließen Sie die Datei.
Erstellen Sie nun den Pod mit der obigen Yaml-Datei und führen Sie ihn aus
[[email protected] ~]$ kubectl create -f nfs-pv-pod.yamlpod/nginx-pv-pod created[[email protected] ~]$[[email protected] ~]$ kubectl get pod nginx- PV-POD -O-Widenname Ready Status Neustarts Alter IP-Knoten Nominierte Knotenbereitschaft Gatesnginx-PV-Pod 1/1 Ausführen 0 66S 172.16.140.28 K8S-Arbeiter-2[[E-Mail-Protected] ~ $ $ Hinweis: Um weitere Details zum Pod zu erhalten, beschreiben Sie kubectl den Pod
Die obige Befehlsausgabe bestätigt, dass der Pod erfolgreich erstellt wurde. Versuchen Sie nun, mit dem curl-Befehl
auf die nginx-Seite zuzugreifen[[email protected] ~]$ curl http://172.16.140.28Hallo, NFS Storage NGINX[[email protected] ~]$Perfekt, die obige Ausgabe des curl-Befehls bestätigt, dass das persistente Volume korrekt im Pod gemountet ist, da wir den Inhalt der index.html-Datei erhalten, die auf der NFS-Freigabe vorhanden ist.
Damit ist der Artikel abgeschlossen. Ich glaube, Sie haben eine grundlegende Vorstellung davon, wie Sie ein NFS-basiertes persistentes Volume in Kubernetes-Pods konfigurieren und verwenden.
Auch lesen :So richten Sie Kubernetes(k8s)-Cluster in HA mit Kubeadm ein
Auch lesen :Installieren und Verwenden von Helm in Kubernetes