Ich habe Multi-Node-Kubernetes eingerichtet. Ich versuche, ein persistentes Volume mithilfe von Speicherklassen mit NFS-Volume-Plugin dynamisch zuzuweisen. Ich habe Beispiele für Speicherklassen für glusterfs, aws-ebs usw. gefunden. Ich habe jedoch kein Beispiel für NFS gefunden. Wenn ich nur PV und PVC erstelle, funktioniert NFS sehr gut (ohne Speicherklasse). Ich habe versucht, Speicherklassendateien für NFS zu schreiben, indem ich auf andere Plugins verwies. bitte verweisen Sie es unten,
nfs-storage-class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
namespace: kube-system
name: my-storage
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
labels:
kubernetes.io/cluster-service: "true"
provisioner: kubernetes.io/nfs
parameters:
path: /nfsfileshare
server: <nfs-server-ip>
nfs-pv-claim.yaml
apiVersion: v1
metadata:
name: demo-claim
annotations:
volume.beta.kubernetes.io/storage-class: my-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
Es hat nicht funktioniert. Meine Frage ist also: Können wir eine Speicherklasse für NFS schreiben? Unterstützt es dynamisches Provisioing?
Ich suche das Gleiche. Ich habe https://github.com/kubernetes-incubator/external-storage/tree/master/nfs gefunden, auf dem ich glaube, dass Sie Ihren Provisioner darauf bezogen haben?
Ich denke, ein NFS-Provider müsste unter dem definierten Pfad ein eindeutiges Verzeichnis erstellen. Ich bin mir nicht wirklich sicher, wie das gemacht werden könnte.
Vielleicht ist das besser als Github-Problem im kubernetes Repo.
Dynamische Speicherbereitstellung mit NFS funktioniert nicht. Verwenden Sie besser Glusterfs. Es gibt ein gutes Tutorial mit behobenen Problemen beim Einrichten . http://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/
Der Zweck von StorageClass
ist der create -Speicher, z. von Cloud-Providern (oder "Provisioner", wie sie in den kubernetes-Dokumenten genannt werden). Im Falle von NFS möchten Sie nur access auf den vorhandenen Speicher zugreifen, und es ist keine Erstellung erforderlich. Sie benötigen also keine StorageClass
. Bitte beziehen Sie sich auf diesen Blog .
Sie können pv, pvc wie unten gezeigt direkt erstellen. Dies ist ein Beispiel für PV und PVC für die private Registrierung. Es sollte für die meisten Apps funktionieren. Stellen Sie sicher, dass Sie den nfs-Server installieren und die Mount-Einträge im Verzeichnis/etc/exports des nfs-Servers für den Zugriff konfigurieren.
example:
/mnt/disks/vol1 <IP ADDRESS OF THE NODE>(rw,sync,no_root_squash,no_all_squash)
registry-pv.yml -
apiVersion: v1
kind: PersistentVolume
metadata:
name: registry-pv
namespace: kube-system
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 50Gi
nfs:
path: /mnt/disks/vol1
server: <IP-Address of NFS SERVER>
persistentVolumeReclaimPolicy: Retain
storageClassName: registry-storage
registry-pvc.yml -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: registry-pvc
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
spec:
accessModes:
- ReadWriteMany
storageClassName: registry-storage
volumeName: registry-pv
resources:
requests:
storage: 50Gi
pVC erstellen, PV -
kubectl create -f registry-pv.yml
kubectl create -f registry-pvc.yml
Nach der Erstellung sollte der pv an den pvc gebunden sein -
Ich habe auch versucht, den NFS-Provisioner in meinem Kubernetes-Cluster zu aktivieren, und es funktionierte zunächst nicht, da in der Schnellstartanleitung nicht erwähnt wird, dass Sie auch die Datei rbac.yaml anwenden müssen (ich habe ein PR um dies zu beheben).
Der nfs-Provisioner funktioniert für mich gut, wenn ich die folgenden Schritte in meinem Cluster befolge: https://github.com/kubernetes-incubator/external-storage/tree/master/nfs#quickstart
$ kubectl create -f deploy/kubernetes/deployment.yaml
$ kubectl create -f deploy/kubernetes/rbac.yaml
$ kubectl create -f deploy/kubernetes/class.yaml
Dann sollten Sie PVCs so erstellen können:
$ kubectl create -f deploy/kubernetes/claim.yaml
Möglicherweise möchten Sie die Ordner ändern, die für die Volume-Mounts in deployment.yaml
verwendet werden, um sie mit Ihrem Cluster abzugleichen.