Bare-metal CSI Driver is a CSI spec implementation to manage locally attached disks for Kubernetes.
- Project status: GA
- Dynamic provisioning: Volumes are created dynamically when
PersistentVolumeClaim
objects are created. - Volume binding modes
- WaitForFirstConsumer
- Generic ephemeral volumes (k8s v1.21+)
- 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
- Raw block mode
- Ability to deploy on subset of nodes within cluster
- CSI Operator
- User defined storage classes
- NVMeOf support
- Kubernetes Scheduler
- SMART Self Test execution
- Volume cloning
- Support of additional Linux distributions/versions
- Bare-metal CSI Operator - Kubernetes Operator to deploy and manage CSI
- Bare-metal CSI Scheduling - Kubernetes Scheduler and Scheduler Extender to guarantee correct pod placement
Installation process is documented in Bare-metal CSI Operator
Upgrade process is documented in Bare-metal CSI Operator
Bare-metal CSI driver consists from the following components:
- Operator - responsible for CSI deployment and lifecycle (upgrade, node add/remove, etc.)
- Scheduler extender - handles
filter
andscore
requests coming from scheduler, requests capacity reservation from Controller service - Scheduler patcher - automates scheduler configuration patching, optional component
- Controller service - handles Create/Delete/Expand Volume requests
- Node service - handles Volume Stage/Unstage, Publish/Unpublish requests
- Drive manager - discovers locally attach disks (drives)
- Node controller - maintains persistent node IDs
Please refer Contribution Guideline fo details