This CSI Driver interfaces a Container Orchestrator (CO), such as Kubernetes or Docker EE, to a Storidge cluster. With this driver you can dynamically provision persistent volumes from a storage abstraction layer managed by the Storidge CIO software.
The Storidge CSI driver is mostly tested on Kubernetes but should also work on other CSI based CO. Feel free to test it on other CO and give us feedback.
Storidge ContainerIO (CIO) is a fully automated, unique software stack that runs on virtual machines, cloud instances and bare metal hosts, with predictable performance. Just as Container Orchestrators create an abstraction layer on top of a group of hosts, Storidge CIO creates a storage abstraction layer for stateful applications to persist, share and manage data on logical resources.
Storidge CIO is purpose built to solve application data management challenges in new orchestrated environments. It eliminates the manual effort, inconsistencies, and tedium in trying to patch external networked storage to Container Orchestrators. Storidge CIO adds the following key capabilities to a Kubernetes cluster:
- automatic data locality
- data redundancy with network RAID
- effortless high availability
- automatic capacity expansion
CSI Driver | Kubernetes | Description |
---|---|---|
1.6.0 | 1.16+ | Failover support and stability improvements |
1.5.0 | 1.16+ | Improved snapshot support and bug fixes |
1.4.0 | 1.16+ | Adds dependency to attacher v2.1.1 and fixed RBAC issue |
1.3.0 | 1.16+ | Supports Kubernetes 1.16+ |
1.1.0 | 1.15- | Supports Kubernetes 1.15-. Removes deprecated items in 1.16 |
1.0.0 | 1.13 - 1.15 | GA release for Kubernetes 1.13-1.15 |
- Kubernetes v1.15+
- Storidge CIO cluster
--allow-privileged
must be enabled for API server and kubelet- (Optional for Kubernetes v1.17+ if snapshot support is needed)
--feature-gates=VolumeSnapshotDataSource=true
set to true for API server and kubelet
The following command deploys the Storidge CSI driver with related volume attachment, driver registration, and provisioning sidecars:
Kubernetes 1.16 and above
kubectl create -f https://raw.githubusercontent.com/Storidge/csi-cio/master/deploy/releases/csi-cio-v1.6.0.yaml
Kubernetes 1.15 and below
kubectl create -f https://raw.githubusercontent.com/Storidge/csi-cio/master/deploy/releases/csi-cio-v1.1.0.yaml
Create storage class with NGINX profile
# cat cio-sc-nginx.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: cio-nginx
provisioner: csi.cio.storidge.com
parameters:
profile: NGINX
reclaimPolicy: Delete
allowVolumeExpansion: true
# kubectl create -f cio-sc-nginx.yaml
storageclass.storage.k8s.io/cio-nginx created
Verify storage class was created
# kubectl get sc
NAME PROVISIONER AGE
cio-default (default) csi.cio.storidge.com 56m
cio-nginx csi.cio.storidge.com 5s
# cat nginx-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: cio-nginx
# kubectl create -f nginx-pvc.yaml
persistentvolumeclaim/nginx-pvc created
Confirm pvc creation
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nginx-pvc Bound pvc-bf1a3b06-30b2-4f6d-b0d6-45f3e11d9aeb 1Gi RWO cio-nginx 1m46s
# kubectl describe pvc
Name: nginx-pvc
Namespace: default
StorageClass: cio-nginx
Status: Bound
Volume: pvc-bf1a3b06-30b2-4f6d-b0d6-45f3e11d9aeb
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"nginx-pvc","namespace":"default"},"spec":{"accessMo...
pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.cio.storidge.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ExternalProvisioning 2m57s persistentvolume-controller waiting for a volume to be created, either by external provisioner "csi.cio.storidge.com" or manually created by system administrator
Normal Provisioning 2m57s csi.cio.storidge.com_kworker1_2097513b-de84-4edb-80f7-2c75277ecdf3 External provisioner is provisioning volume for claim "default/nginx-pvc"
Normal ProvisioningSucceeded 2m55s csi.cio.storidge.com_kworker1_2097513b-de84-4edb-80f7-2c75277ecdf3 Successfully provisioned volume pvc-bf1a3b06-30b2-4f6d-b0d6-45f3e11d9aeb
Resize pvc