Skip to content

ueni-ltd/seaweedfs-csi-driver

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Container Storage Interface (CSI) for SeaweedFs

Docker Pulls

Container storage interface is an industry standard that will enable storage vendors to develop a plugin once and have it work across a number of container orchestration systems.

SeaweedFS is a simple and highly scalable distributed file system, to store and serve billions of files fast!

Deployment (Kubernetes)

Prerequisites:

  • Already have a working Kubernetes cluster (includes kubectl)
  • Already have a working SeaweedFS cluster

Utilize existing SeaweedFS storage for your Kubernetes cluster (bare metal)

  1. Git clone this repository and add your SeaweedFS master IP to deploy/kubernetes/seaweedfs-csi.yaml (2 places)

  2. Apply the container storage interface for SeaweedFS for your cluster

$ kubectl apply -f deploy/kubernetes/seaweedfs-csi.yaml
  1. Ensure all the containers are ready and running
$ kubectl get po -n kube-system
  1. Testing: Create a persistant volume claim for 5GiB with name seaweedfs-csi-pvc with storage class seaweedfs-storage. The value, 5Gib does not have any significance as for SeaweedFS the whole filesystem is mounted into the container.
$ kubectl apply -f deploy/kubernetes/sample-seaweedfs-pvc.yaml
  1. Verify if the persistant volume claim exists and wait until its the STATUS is Bound
$ kubectl get pvc
  1. After its in Bound state, create a sample workload mounting that volume
$ kubectl apply -f deploy/kubernetes/sample-busybox-pod.yaml
  1. Verify the storage mount of the busybox pod
$ kubectl exec my-csi-app -- df -h
  1. Clean up
$ kubectl delete -f deploy/kubernetes/sample-busybox-pod.yaml
$ kubectl delete -f deploy/kubernetes/sample-seaweedfs-pvc.yaml
$ kubectl delete -f deploy/kubernetes/seaweedfs-csi.yaml

Deployment by helm chart

  1. Clone project
git clone https://github.com/seaweedfs/seaweedfs-csi-driver.git
  1. Install
helm install --set seaweedfsFiler=<filerHost:port> seaweedfs-csi-driver ./seaweedfs-csi-driver/deploy/helm/seaweedfs-csi-driver
  1. Clean up
helm uninstall seaweedfs-csi-driver

Safe rollout update

When update DaemonSet ( DS ) break processes who implements fuse mount. And now new pod not remount net device

For better safe update use node.updateStrategy.type: OnDelete in this need manual update. Steps:

  • delete DS pods on node where no exists seaweefs PV
  • cordon or taint node
  • evict or delete pods with seaweedfs PV
  • delete DS pod on node
  • uncordon or remove taint on node
  • repeat all steps on all nodes

License

Apache v2 license

Code of conduct

Participation in this project is governed by Kubernetes/CNCF code of conduct

Releases

No releases published

Packages

No packages published

Languages

  • Go 95.0%
  • Dockerfile 2.6%
  • Makefile 2.0%
  • Smarty 0.4%