Tengo una configuración de kubernetes de varios nodos. Estoy tratando de asignar un volumen persistente de forma dinámica utilizando clases de almacenamiento con el complemento de volumen NFS. Encontré ejemplos de clases de almacenamiento para glusterfs, aws-ebs, etc. pero no encontré ningún ejemplo para NFS. Si solo creo PV y PVC, entonces NFS funciona muy bien (sin clase de almacenamiento). Traté de escribir un archivo de clase de almacenamiento para NFS, consultando otros complementos. por favor refiérase a continuación,
clase-de-almacenamiento-nfs.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: 3GiNo funcionó. Entonces, mi pregunta es: ¿Podemos escribir una clase de almacenamiento para NFS? ¿Es compatible con el aprovisionamiento dinámico?
A partir de agosto de 2020, así es como se ven las cosas para la persistencia de NFS en Kubernetes:
Puedes
apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /test-pd name: test-volume volumes: - name: test-volume nfs: path: /foo/bar server: wherever.dns apiVersion: v1 kind: PersistentVolume metadata: name: pv0003 spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: slow mountOptions: - hard - nfsvers=4.1 nfs: path: /tmp server: 172.17.0.2external-storage . Esto se actualizó por última vez hace dos años y se ha terminado oficialmente, así que buena suerte. Con esta ruta, puede crear una clase de almacenamiento como la que se muestra a continuación para cumplir con los PVC desde su servidor NFS.kubernetes-sigs/nfs-subdir-external-provisioner ! Parece funcionar de manera similar al antiguo aprovisionador nfs-client , pero está mucho más actualizado. ¡Hurra! kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: example-nfs provisioner: example.com/nfs mountOptions: - vers=4.1master , pero no se ha publicado) para el controlador CSI.external-storage con algo de la comunidad o algo que escriba. Al investigar este problema, me topé con un aprovisionador escrito por alguien en GitHub, por ejemplo. No entiendo si estos proveedores funcionan bien, son seguros o funcionan, pero existen.El aprovisionamiento de almacenamiento dinámico usando NFS no funciona, mejor use glusterfs. Hay un buen tutorial con problemas comunes solucionados durante la configuración. http://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/
También traté de habilitar el aprovisionador de NFS en mi clúster de Kubernetes y al principio no funcionó, porque la guía de inicio rápido no menciona que también debe aplicar rbac.yaml (abrí un PR para arreglar esto).
El aprovisionador de nfs me funciona bien si sigo estos pasos en mi clúster: 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.yamlEntonces debería poder crear PVC como este:
$ kubectl create -f deploy/kubernetes/claim.yaml Es posible que desee cambiar las carpetas utilizadas para los montajes de volumen en deployment.yaml para que coincidan con su clúster.