Skip to content
JuiceFS CSI Driver
Go Shell Makefile Dockerfile
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd Tidy build environment Jul 6, 2019
deploy Enlarge default provision timeout to 60s Oct 22, 2019
docs Add common label to ease log aggregation Oct 22, 2019
examples Add example for permissions (#3) Aug 9, 2019
hack Remove unused mod Apr 16, 2019
juicefs-cli Auth using juicefs-cli outside csi driver Apr 27, 2019
pkg Support more arguments for `juicefs auth` Oct 17, 2019
tests Support more arguments for `juicefs auth` Oct 17, 2019
.envrc Support mount options with volume attributes (#10) May 14, 2019
.gitignore
.travis.yml Switch to xenial Jul 6, 2019
Dockerfile Tidy build environment Jul 6, 2019
LICENSE Add LICENSE May 19, 2019
Makefile Improve dev workflow Oct 22, 2019
README.md Fix api group for k8s 1.16 Oct 17, 2019
THIRD-PARTY Add Dockerfile Apr 16, 2019
dev.Dockerfile Support mount options with volume attributes (#10) May 14, 2019
go.mod Support more arguments for `juicefs auth` Oct 17, 2019
go.sum Tidy build environment Jul 6, 2019

README.md

JuiceFS CSI Driver

Build Status

The JuiceFS Container Storage Interface (CSI) Driver implements the CSI specification for container orchestrators to manage the lifecycle of JuiceFS filesystems.

Installation

Deploy the driver:

kubectl apply -f https://raw.githubusercontent.com/juicedata/juicefs-csi-driver/master/deploy/k8s.yaml

Additional steps could be required on some provider, e.g. Aliyun Container Service Kubernetes. See Troubleshooting#AttachVolume.Attach failed for details.

Examples

Before the example, you need to:

  • Get yourself familiar with how to setup Kubernetes and how to create JuiceFS filesystem.
  • When creating JuiceFS filesystem, make sure it is accessible from Kuberenetes cluster. It is recommended to create the filesystem inside the same region as Kubernetes cluster.
  • Install JuiceFS CSI driver following the Installation steps.

Example links

Notes:

  • Since JuiceFS is an elastic filesystem it doesn't really enforce any filesystem capacity. The actual storage capacity value in persistence volume and persistence volume claim is not used when creating the filesystem. However, since the storage capacity is a required field by Kubernetes, you must specify the value and you can use any valid value e.g. 10Pi for the capacity.

CSI Specification Compatibility

JuiceFS CSI Driver \ CSI Version v0.3 v1.0
master branch (csi-v1) no yes
csi-v0 branch yes no

Interfaces

Currently only static provisioning is supported. This means an JuiceFS filesystem needs to be created manually on juicefs web console first. After that it can be mounted inside a container as a volume using the driver.

The following CSI interfaces are implemented:

  • Node Service: NodePublishVolume, NodeUnpublishVolume, NodeGetCapabilities, NodeGetInfo, NodeGetId
  • Identity Service: GetPluginInfo, GetPluginCapabilities, Probe

JuiceFS CSI Driver on Kubernetes

The following sections are Kubernetes specific. If you are a Kubernetes user, use this for driver features, installation steps and examples.

Kubernetes Version Compatibility Matrix

JuiceFS CSI Driver \ Kubernetes Version v1.11 v1.12 v1.13 v1.14 v1.15 v1.16
master branch (csi-v1) yes yes
csi-v0 branch yes yes yes yes

Container Images

JuiceFS CSI Driver Version Image
master branch juicedata/juicefs-csi-driver:latest
csi-v1 branch juicedata/juicefs-csi-driver:csi-v1
csi-v0 branch juicedata/juicefs-csi-driver:csi-v0

Features

  • Static provisioning - JuiceFS filesystem needs to be created manually first, then it could be mounted inside container as a persistent volume (PV) using the driver.
  • Mount options - CSI volume attributes can be specified in the persistence volume (PV) to define how the volume should be mounted.
  • Read write many - Support ReadWriteMany access mode
  • Sub path - provision persisten volume with subpath in JuiceFS filesystem
  • Dynamic provisioning - allows storage volumes to be created on-demand
Feature \ JuiceFS CSI Driver master (csi-v1) csi-v0
static provisioning yes yes
mount options yes yes
read write many yes yes
sub path yes yes
dynamic provisioning yes no

Validation

JuiceFS CSI driver has been validated in the following Kubernetes version

Kubernetes \ JuiceFS CSI Driver master (csi-v1) csi-v0
v1.11.9 / kops 1.11.1 yes
v1.12.6-eks-d69f1b / AWS EKS yes
v1.12.6-aliyun.1 / Aliyun CS K8s yes
v1.13.5 / kops 1.13.0-alpha.1 yes
v1.14.1 / kops (git-39884d0b5) yes yes
v1.16.0 / minikube 1.4.0 yes

Manual configuration is required for Aliyun Container Service Kubernetes. See Troubleshooting#AttachVolume.Attach failed for details.

Develop

See DEVELOP document.

License

This library is licensed under the Apache 2.0 License.

You can’t perform that action at this time.