Giter Site home page Giter Site logo

nfs-provisioner's Introduction

Moved to https://github.com/kubernetes-incubator/external-storage. This repo will no longer be updated, it will be deprecated!

nfs-provisioner

Build Status

nfs-provisioner is an out-of-tree dynamic provisioner for Kubernetes 1.4. You can use it to quickly & easily deploy shared storage that works almost anywhere. Or it can help you write your own out-of-tree dynamic provisioner by serving as an example implementation of the requirements detailed in the proposal. Go here for a demo of how to use it and here for an example of how to write your own.

It works just like in-tree dynamic provisioners: a StorageClass object can specify an instance of nfs-provisioner to be its provisioner like it specifies in-tree provisioners such as GCE or AWS. Then, the instance of nfs-provisioner will watch for PersistentVolumeClaims that ask for the StorageClass and automatically create NFS-backed PersistentVolumes for them. For more information on how dynamic provisioning works, see the docs or this blog post.

Quickstart

Choose some volume for your nfs-provisioner instance to store its state & data in and mount the volume at /export in deploy/kube-config/deployment.yaml. It doesn't have to be a hostPath volume, it can e.g. be a PVC. Note that the volume must have a supported file system on it: any local filesystem on Linux is supported & NFS is not supported.

...
  volumeMounts:
    - name: export-volume
      mountPath: /export
volumes:
  - name: export-volume
    hostPath:
      path: /tmp/nfs-provisioner
...

Choose a provisioner name for a StorageClass to specify and set it in deploy/kube-config/deployment.yaml

...
args:
  - "-provisioner=example.com/nfs"
...

Create the deployment.

$ kubectl create -f deploy/kube-config/deployment.yaml
service "nfs-provisioner" created
deployment "nfs-provisioner" created

Create a StorageClass named "example-nfs" with provisioner: example.com/nfs.

$ kubectl create -f deploy/kube-config/class.yaml
storageclass "example-nfs" created

Create a PersistentVolumeClaim with annotation volume.beta.kubernetes.io/storage-class: "example-nfs"

$ kubectl create -f deploy/kube-config/claim.yaml
persistentvolumeclaim "nfs" created

A PersistentVolume is provisioned for the PersistentVolumeClaim. Now the claim can be consumed by some pod(s) and the backing NFS storage read from or written to.

$ kubectl get pv
NAME                                       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM         REASON    AGE
pvc-dce84888-7a9d-11e6-b1ee-5254001e0c1b   1Mi        RWX           Delete          Bound       default/nfs             23s

Deleting the PersistentVolumeClaim will cause the provisioner to delete the PersistentVolume and its data.

Deleting the provisioner deployment will cause any outstanding PersistentVolumes to become unusable for as long as the provisioner is gone.

Running

Go here for a demo of how to run nfs-provisioner. You may also/instead want to read the (dryer but more detailed) following docs.

To deploy nfs-provisioner on a Kubernetes cluster see Deployment.

To use nfs-provisioner once it is deployed see Usage.

For information on running multiple instances of nfs-provisioner see Running Multiple Provisioners.

Writing your own

Go here for an example of how to write your own out-of-tree dynamic provisioner.

Roadmap

This is still alpha/experimental and will change to reflect the out-of-tree dynamic provisioner proposal

November

  • Create a process for releasing (to Docker Hub, etc.)
  • Release 0.1 for kubernetes 1.5
  • Support using the controller as a library
  • Support running the provisioner as a StatefulSet

December

  • Prevent multiple provisioners from racing to provision where possible (in a StatefulSet or DaemonSet)
  • Add configurable retries for failed provisioning and deleting

Community, discussion, contribution, and support

Learn how to engage with the Kubernetes community on the community page.

You can reach the maintainers of this project at:

  • Slack: #sig-storage

Kubernetes Incubator

This is a Kubernetes Incubator project. The project was established 2016-11-15. The incubator team for the project is:

  • Sponsor: Clayton (@smarterclayton)
  • Champion: Brad (@childsb)
  • SIG: sig-storage

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

nfs-provisioner's People

Contributors

wongma7 avatar gavrie avatar childsb avatar jsafrane avatar erikbsap avatar sarahnovotny avatar

Watchers

James Cloos avatar Dapeng Jiao avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.