How ceph/ceph-csi works
Ceph CSI is a Kubernetes-facing storage driver suite that translates CSI requests into Ceph-backed volume operations. The principal workflow runs from a container orchestrator request through a driver/controller to volume provisioning, then through node staging and mounting for workload use. RBD provides block and filesystem-mode volumes; CephFS and NFS provide shared-file options, while NVMe-oF exposes RBD-backed volumes through gateways. Snapshots, group snapshots, replication, health checking, and key management are additional capabilities. The graph reflects the README and supplied excerpts; several subsystem connections are documented capabilities or inferred from explicit delegation, while unsampled implementation details are omitted.
Main entry points: cephcsi.go CSI process · rbd/controllerserver.go RBD controller · controller/controllerserver.go NVMe-oF controller · cephfs/controllerserver.go CephFS controller
Components 26
CSI interface
- CSI process
cmd/cephcsi.go - CSI common servers
internal/csi-common/server.go
RBD and NVMe-oF
- RBD driver
internal/rbd/driver/driver.go - RBD controller
internal/rbd/controllerserver.go - RBD node service
internal/rbd/nodeserver.go - RBD manager
internal/rbd/manager.go - RBD groups
internal/rbd/group_controllerserver.go - NVMe-oF driver
internal/nvmeof/driver/driver.go - NVMe-oF controller
internal/nvmeof/controller/controllerserver.go - NVMe-oF node service
internal/nvmeof/nodeserver/nodeserver.go
CephFS and NFS
- CephFS driver
internal/cephfs/driver.go - CephFS controller
internal/cephfs/controllerserver.go - CephFS node service
internal/cephfs/nodeserver.go - CephFS operations
internal/cephfs/core/volume.go - NFS controller
internal/nfs/controller/controllerserver.go - NFS node service
internal/nfs/nodeserver/nodeserver.go
Operations and extensions
- RADOS journals
internal/journal/voljournal.go - Driver deployment resources
api/deploy/kubernetes/doc.go - CSI add-on services
internal/csi-addons/server/server.go - RBD replication
internal/csi-addons/rbd/replication.go - Key management
internal/kms/kms.go - Volume health checks
internal/health-checker/manager.go
Other components
- Container orchestrator
- NVMe-oF gateway
- Ceph cluster
- Kubernetes API
Connections 35
- Container orchestrator → CSI process: sends CSI requests
- CSI process → RBD driver: starts driver
- CSI process → CephFS driver: starts driver
- CSI process → NVMe-oF driver: starts driver
- CSI process → CSI common servers: uses shared servers
- RBD driver → RBD controller: registers controller
- RBD driver → RBD node service: registers node service
- RBD controller → RBD manager: manages volumes
- RBD controller → Ceph cluster: creates and deletes images
- RBD manager → RADOS journals: records volume groups
- RBD groups → RBD manager: manages group snapshots
- RBD node service → Ceph cluster: attaches volumes
- CephFS driver → CephFS controller: registers controller
- CephFS driver → CephFS node service: registers node service
- CephFS controller → CephFS operations: creates volumes and snapshots
- CephFS operations → Ceph cluster: operates on subvolumes
- CephFS controller → RADOS journals: tracks volume state
- CephFS node service → Ceph cluster: mounts CephFS
- NFS controller → CephFS controller: delegates backend operations
- NFS controller → Ceph cluster: creates NFS exports
- NFS node service → Ceph cluster: mounts exported volumes
- NVMe-oF driver → NVMe-oF controller: registers controller
- NVMe-oF driver → NVMe-oF node service: registers node service
- NVMe-oF controller → RBD controller: forwards RBD operations
- NVMe-oF controller → NVMe-oF gateway: configures subsystems and hosts
- NVMe-oF node service → NVMe-oF gateway: connects to namespaces
- NVMe-oF controller → Ceph cluster: provisions RBD backing
- Container orchestrator → Kubernetes API: manages deployment
- Driver deployment resources → Kubernetes API: defines driver resources
- CSI process → CSI add-on services: serves add-on APIs
- CSI add-on services → RBD replication: dispatches replication
- RBD replication → Ceph cluster: manages replicated volumes
- RBD controller → Key management: uses encryption keys
- RBD node service → Volume health checks: checks volume health
- CephFS node service → Volume health checks: checks volume health