Follow this guide to install the SPDK-CSI Driver for Kubernetes.
make image
cd deploy/spdk
sudo docker build -t spdkdev .
NOTE: Kubernetes nodes must pre-allocate hugepages in order for the node to report its hugepage capacity. A node can pre-allocate huge pages for multiple sizes.
helm repo add spdk-csi https://raw.githubusercontent.com/simplyblock-io/spdk-csi/master/charts
helm repo update
helm install -n spdk-csi --create-namespace spdk-csi spdk-csi/spdk-csi \
--set csiConfig.simplybk.uuid=ace14718-81eb-441f-9d4c-d71ce6904196 \
--set csiConfig.simplybk.ip=https://96xdzb9ne7.execute-api.us-east-1.amazonaws.com \
--set csiSecret.simplybk.secret=k6U5moyrY5vCVtSiCcKo \
--set logicalVolume.pool_name=testing1
helm status "spdk-csi" --namespace "spdk-csi"
If you want to delete your Chart, use this command
helm uninstall "spdk-csi" --namespace "spdk-csi"
If you want to delete the namespace, use this command
kubectl delete namespace spdk-csi
The following table lists the configurable parameters of the latest Simplyblock CSI Driver chart and default values.
Parameter | Description | Default |
---|---|---|
driverName |
alternative driver name | csi.simplyblock.io |
image.spdkcsi.repository |
simplyblock-csi-driver image | simplyblock/spdkcsi |
image.spdkcsi.tag |
simplyblock-csi-driver image tag | latest |
image.spdkcsi.pullPolicy |
simplyblock-csi-driver image pull policy | Always |
image.csiProvisioner.repository |
csi-provisioner docker image | registry.k8s.io/sig-storage/csi-provisioner |
image.csiProvisioner.tag |
csi-provisioner docker image tag | v4.0.1 |
image.csiProvisioner.pullPolicy |
csi-provisioner image pull policy | Always |
image.csiAttacher.repository |
csi-attacher docker image | gcr.io/k8s-staging-sig-storage/csi-attacher |
image.csiAttacher.tag |
csi-attacher docker image tag | v4.5.1 |
image.csiAttacher.pullPolicy |
csi-attacher image pull policy | Always |
image.nodeDriverRegistrar.repository |
csi-node-driver-registrar docker image | registry.k8s.io/sig-storage/csi-node-driver-registrar |
image.nodeDriverRegistrar.tag |
csi-node-driver-registrar docker image tag | v2.10.1 |
image.nodeDriverRegistrar.pullPolicy |
csi-node-driver-registrar image pull policy | Always |
image.csiSnapshotter.repository |
csi-snapshotter docker image | registry.k8s.io/sig-storage/csi-snapshotter |
image.csiSnapshotter.tag |
csi-snapshotter docker image tag | v7.0.2 |
image.csiSnapshotter.pullPolicy |
csi-snapshotter image pull policy | Always |
image.csiResizer.repository |
csi-resizer docker image | gcr.io/k8s-staging-sig-storage/csi-resizer |
image.csiResizer.tag |
csi-resizer docker image tag | v1.10.1 |
image.csiResizer.pullPolicy |
csi-resizer image pull policy | Always |
image.csiHealthMonitor.repository |
csi-external-health-monitor-controller docker image | gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller |
image.csiHealthMonitor.tag |
csi-external-health-monitor-controller docker image tag | v0.11.0 |
image.csiHealthMonitor.pullPolicy |
csi-external-health-monitor-controller image pull policy | Always |
image.simplyblock.repository |
simplyblock spdk docker image | simplyblock/simplyblock |
image.simplyblock.tag |
simplyblock spdk docker image tag | release_v1 |
image.simplyblock.pullPolicy |
csi-snapshotter image pull policy | Always |
serviceAccount.create |
whether to create service account of spdkcsi-controller | true |
rbac.create |
whether to create rbac of spdkcsi-controller | true |
controller.replicas |
replica number of spdkcsi-controller | 1 |
storageclass.create |
create storageclass | true |
snapshotclass.create |
create snapshotclass | true |
snapshotcontroller.create |
create snapshot controller and CRD for snasphot support it | true |
externallyManagedConfigmap.create |
Specifies whether a externallyManagedConfigmap should be created | true |
externallyManagedSecret.create |
Specifies whether a externallyManagedSecret should be created | true |
csiConfig.simplybk.uuid |
the simplyblock cluster UUID on which the volumes are provisioned | `` |
csiConfig.simplybk.ip |
the HTTPS API Gateway endpoint connected to the management node | https://o5ls1ykzbb.execute-api.eu-central-1.amazonaws.com |
csiSecret.simplybk.secret |
the cluster secret associated with the cluster | `` |
csiSecret.simplybkPvc.crypto_key1 |
if an encrypted PVC is to be created, value of crypto_key1 |
`` |
csiSecret.simplybkPvc.crypto_key2 |
if an encrypted PVC is to be created, value of crypto_key2 |
`` |
logicalVolume.pool_name |
the name of the pool against which the lvols needs to be provisioned. This Pool needs to be created before its passed here. | testing1 |
logicalVolume.qos_rw_iops |
the value of lvol parameter qos_rw_iops | 0 |
logicalVolume.qos_rw_mbytes |
the value of lvol parameter qos_rw_mbytes | 0 |
logicalVolume.qos_r_mbytes |
the value of lvol parameter qos_r_mbytes | 0 |
logicalVolume.qos_w_mbytes |
the value of lvol parameter qos_w_mbytes | 0 |
logicalVolume.encryption |
set to True if encryption needs be enabled on lvols. |
False |
logicalVolume.distr_ndcs |
the value of distr_ndcs | 1 |
logicalVolume.distr_npcs |
the value of distr_npcs | 1 |
logicalVolume.lvol_priority_class |
the value of lvol parameter lvol_priority_class | 0 |
benchmarks |
the number of benchmarks to run | 0 |
node.tolerations.create |
Whether to create tolerations for the csi node | false |
node.tolerations.effect |
The effect of tolerations on the csi node | <empty> |
node.tolerations.key |
The key of tolerations for the csi node | <empty> |
node.tolerations.operator |
The operator for the csi node tolerations | Exists |
node.tolerations.value |
The value of tolerations for the csi node | <empty> |
cachingnode.tolerations.create |
Whether to create tolerations for the caching node | false |
cachingnode.tolerations.effect |
The effect of tolerations on the caching node | <empty> |
cachingnode.tolerations.key |
The key of tolerations for the caching node | <empty> |
cachingnode.tolerations.operator |
The operator for the caching node tolerations | Exists |
cachingnode.tolerations.value |
The value of tolerations for the caching node | <empty> |
cachingnode.create |
Whether to create caching node on kubernetes worker node | false |
cachingnode.nodeSelector |
The node selector to specify which nodes the caching node DaemonSet should run on | simplyblock-cache |
cachingnode.ifname |
the default interface to be used for binding the caching node to host interface | eth0 |
cachingnode.cpuMask |
the cpu mask for the spdk app to use for caching node | <empty> |
cachingnode.spdkMem |
the amount of hugepage memory to allocate for caching node | <empty> |
cachingnode.spdkImage |
SPDK image uri for caching node | <empty> |
cachingnode.multipathing |
Enable multipathing for lvol connection | true |
storagenode.daemonsets[0].name |
The name of the storage node DaemonSet | storage-node-ds |
storagenode.daemonsets[0].appLabel |
The label applied to the storage node DaemonSet for identification | storage-node |
storagenode.daemonsets[0].nodeSelector |
The node selector to specify which nodes the storage node DaemonSet should run on | storage-node |
storagenode.daemonsets[0].tolerations.create |
Whether to create tolerations for the storage node | false |
storagenode.daemonsets[0].tolerations.effect |
the effect of tolerations on the storage node | <empty> |
storagenode.daemonsets[0].tolerations.key |
the key of tolerations for the storage node | <empty> |
storagenode.daemonsets[0].tolerations.operator |
the operator for the storage node tolerations | Exists |
storagenode.daemonsets[0].tolerations.value |
the value of tolerations for the storage node | <empty> |
storagenode.daemonsets[1].name |
The name of the reserve storage node DaemonSet | storage-node-ds |
storagenode.daemonsets[1].appLabel |
The label applied to the reserve storage node DaemonSet for identification | storage-node |
storagenode.daemonsets[1].nodeSelector |
The node selector to specify which nodes the reserve storage node DaemonSet should run on | storage-node |
storagenode.daemonsets[1].tolerations.create |
Whether to create tolerations for the reserve storage node | false |
storagenode.daemonsets[1].tolerations.effect |
the effect of tolerations on the reserve storage node | <empty> |
storagenode.daemonsets[1].tolerations.key |
the key of tolerations for the reserve storage node | <empty> |
storagenode.daemonsets[1].tolerations.operator |
the operator for the reserve storage node tolerations | Exists |
storagenode.daemonsets[1].tolerations.value |
the value of tolerations for the reserve storage node | <empty> |
storagenode.create |
Whether to create storage node on kubernetes worker node | false |
storagenode.ifname |
the default interface to be used for binding the storage node to host interface | eth0 |
storagenode.cpuMask |
the cpu mask for the spdk app to use for storage node | <empty> |
storagenode.spdkImage |
SPDK image uri for storage node | <empty> |
storagenode.maxLvol |
the default max lvol per storage node | 10 |
storagenode.maxSnap |
the default max snapshot per storage node | 10 |
storagenode.maxProv |
the max provisioning size of all storage nodes | 150g |
storagenode.jmPercent |
the number in percent to use for JM from each device | 3 |
storagenode.numPartitions |
the number of partitions to create per device | 0 |
storagenode.numDevices |
the number of devices per storage node | 1 |
storagenode.numDistribs |
the number of distribs per storage node | 2 |
storagenode.iobufSmallPoolCount |
bdev_set_options param | <empty> |
storagenode.iobufLargePoolCount |
bdev_set_options param | <empty> |
storagenode.disableHAJM |
Disable ha Journal Manager | false |
storagenode.enableTestDevice |
Enable creation of test device | false |
storagenode.dataNics |
Data interface names | <empty> |
- Add
--wait -v=5 --debug
inhelm install
command to get detailed error - Use
kubectl describe
to acquire more info