/csi-baremetal

Bare-metal CSI Driver

Primary LanguageGoApache License 2.0Apache-2.0

PR validation E2E testing codecov Go Report Card Kubernetes

Bare-metal CSI Driver

Bare-metal CSI Driver is a CSI spec implementation to manage locally attached disks for Kubernetes.

  • Project status: GA

Features

  • 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

Planned features

  • User defined storage classes
  • NVMeOf support
  • Kubernetes Scheduler
  • SMART Self Test execution
  • Volume cloning
  • Support of additional Linux distributions/versions

Related repositories

Installation process

Installation process is documented in Bare-metal CSI Operator

Upgdare process

Upgrade process is documented in Bare-metal CSI Operator

High level architecture

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 and score 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

Screenshot

Contribution

Please refer Contribution Guideline fo details