Bare-metal CSI Plugin is a CSI spec implementation to manage locally attached drives for Kubernetes.
- Project status: Alpha - no backward compatibility is provided
- Kubernetes: 1.18
- Node OS: Ubuntu 18.10
- Helm: 3.0
- Dynamic provisioning: Volumes are created dynamically when
PersistentVolumeClaim
objects are created. - Inline volumes
- LVM support
- Storage classes for the different drive types: HDD, SSD, NVMe
- Drive health detection
- Scheduler extender
- Support unique ID for each node in the K8s cluster
- Service procedures - node and disk replacement
- Volume expand support
- User defined storage classes
- NVMeOf support
- Cross-platform
- Raw block mode
-
Pre-requisites
1.1. go version 1.14.2
1.2. protoc version 3
1.3. helm
1.4. kubectl
-
Build and deploy CSI plugin
2.1 Build Bare-metal CSI Plugin images and push them to your registry server
REGISTRY=<your-registry.com> make generate-api build images
2.2 Deploy CSI plugin
cd charts && helm install csi-baremetal-driver csi-baremetal-driver --set global.registry=<your-registry.com> --set image.tag=<tag> --set feature.extender=true
2.3 Deploy Kubernetes scheduler extender
cd charts && helm install csi-baremetal-scheduler-extender csi-baremetal-scheduler-extender --set registry=<your-registry.com> --set image.tag=<tag>
-
Check default storage classes available
kubectl get storageclasses
-
Unique node ID support In order to support physical node replacement during which drives remain same CSIBMNode operator should be installed before plugin and extender installation.
helm install operator charts/csibm-operator --set image.registry=<your-registry.com> --set image.tag=<tag>
All options could be found in values.yaml'For using generated ID in plugin and extender they should be installed with next feature option:
--set feature.usenodeannotation=true
Use csi-baremetal-sc
storage class for PVC in PVC manifest or in persistentVolumeClaimTemplate section if you need to
provision PV bypassing LVM. Size of the resulting PV will be equal to the size of underlying physical drive.
Use csi-baremetal-sc-hddlvg
or csi-baremetal-sc-ssdlvg
storage classes for PVC in PVC manifest or in
persistentVolumeClaimTemplate section if you need to provision PVC based on the logical volume. Size of the resulting PV
will be equal to the size of PVC.
Please refer Contribution Guideline fo details