Cloud-Native Distributed Storage Management Plane, Kubernetes Operator & CSI Plugin
k8s-distributed-storage-plane is a high-performance distributed storage management platform crafted for cloud-native infrastructure, high-throughput AI/ML workloads, and large-scale compute clusters. It provides an end-to-end control plane handling dynamic volume provisioning, direct storage telemetry streaming, Kubernetes Custom Resource reconciliation, and a real-time web management dashboard.
- π Interactive Web Demo: https://developertogo.github.io/k8s-distributed-storage-plane/
- π Interactive Swagger / OpenAPI Documentation: https://developertogo.github.io/k8s-distributed-storage-plane/api-docs
(Also accessible locally at
http://localhost:5000/api-docswhen running the backend API).
Figure: Real-time UI displaying dual-axis C3.js (c3j) throughput & P99 latency splines, distributed IOPS area chart, NVMe-oF node queue depths, dynamic volume claims, and live Kubernetes Storage Operator reconciliation stream.
-
Kubernetes Storage Operator & Custom Controller (
k8s/operator/)- Custom Resource Definitions (CRDs):
DistributedStorageCluster&StorageVolumeClaim. - Reconciler loop managing cluster health, quota enforcement, and automated node recovery.
- Custom Resource Definitions (CRDs):
-
Container Storage Interface (CSI) Plugin Simulator (
k8s/csi/)- Identity Service: Plugin registration and capability reporting.
- Controller Service:
CreateVolume,DeleteVolume, and volume attachment orchestration. - Node Service:
NodeStageVolume,NodePublishVolume(direct storage mount simulation), andNodeGetVolumeStats.
-
Backend Management Plane (
server/)- Built using the
asyncmodule (async.waterfall,async.parallel,async.queue) for parallel node health probes and batch volume operations. - Apache Kafka pipeline streaming sub-second telemetry (
storage-telemetry&cluster-events). - MongoDB persistence for tenant quotas, volume catalogs, and audit logs.
- WebSocket server for zero-latency metric broadcasts to client dashboards.
- Built using the
-
Frontend Dashboard (
client/)- Real-time multi-axis time-series visualization using C3.js (c3j) and D3.
- Dynamic DOM bindings and modal workflows powered by jQuery.
- Responsive enterprise UI styled in Bootstrap 5 with a modern dark theme.
- Live streaming IOPS, Bandwidth (GB/s), and P99 Latency (microseconds) over WebSockets.
-
Zero-Dependency Mock Engine & GitHub Pages Demo (
client/src/services/mockTelemetryService.js)- Built-in client-side mock service generating realistic live telemetry pulses, training checkpoint spikes, and simulated K8s events in-browser.
- Enables 100% standalone interactive UI demo recording and single-click GitHub Pages deployment without requiring live cluster backends.
-
macOS M3 (24GB) Multi-Node Local Cluster (
scripts/k8s_setup.sh)- 3-node local cluster setup (1 control plane + 2 worker nodes) for testing multi-node CSI volume attachments, node failover, and pod migrations.
- ποΈ Architecture Guide β Comprehensive technical deep dive covering Kubernetes Operators, CSI gRPC architecture, Kafka telemetry streaming pipeline, storage performance formulas, and C3.js data visualization suite.
- π System Documentation & Manual β Complete operational and implementation guide covering declarative CRDs, async orchestration engine, benchmark tooling, and multi-node cluster verification.
# 1. Aggregate Bandwidth / Throughput (in GB/s)
throughput_GBps = (iops * block_size_KB) / (1024 * 1024)
# 2. Total I/O Service Time & Latency (microseconds)
total_latency_us = queue_time_us + service_time_us
# 3. P99 (99th Percentile) Latency from Sample Array
sorted_latencies = sorted(latency_samples)
p99_index = int(len(sorted_latencies) * 0.99)
latency_p99_us = sorted_latencies[p99_index]
# 4. Storage Pool Capacity Utilization Ratio
utilization_ratio = used_capacity_bytes / total_capacity_bytes
available_capacity_GB = (total_capacity_bytes - used_capacity_bytes) / (1024 ** 3)
# 5. Direct Storage Efficiency (accounting for interconnect & PCIe overhead)
effective_direct_bandwidth_GBps = raw_nvme_bandwidth_GBps * (1.0 - interconnect_overhead_factor)k8s-distributed-storage-plane/
βββ README.md # Project overview & documentation
βββ LICENSE # Apache 2.0 open-source license
βββ docs/ # Project architecture & system manuals
β βββ ARCHITECTURE.md # Technical architecture & subsystem design
β βββ DOCUMENTATION.md # Complete system documentation & runbook
βββ docker-compose.yml # Local multi-service stack (API, UI, Kafka, MongoDB)
βββ quickstart.sh # Single-command bootstrap script
βββ deploy.sh # K8s manifest deployment script
β
βββ k8s/ # Kubernetes Engine, CRDs, and CSI Driver
β βββ kind-config.yaml # 3-Node Kind cluster config for Colima (macOS M3)
β βββ crds/
β β βββ storagecluster.crd.yaml # DistributedStorageCluster CRD
β β βββ storagevolume.crd.yaml # StorageVolumeClaim CRD
β βββ examples/
β β βββ storagecluster-sample.yaml # Sample production cluster manifest
β β βββ storagevolume-sample.yaml # Sample direct storage & cache claims
β βββ operator/
β β βββ controller.js # K8s Custom Controller / Live Kind reconciler
β β βββ package.json
β βββ csi/
β βββ driver.js # CSI Plugin (Identity, Controller, Node services)
β βββ storage_simulator.js # NVMe-oF / Direct storage attachment mock
β
βββ server/ # Node.js + Express Backend
β βββ package.json
β βββ src/
β βββ server.js # Express server & WebSocket hub
β βββ config/index.js # Environment and cluster configuration
β βββ orchestration/
β β βββ asyncWorkflows.js # async module orchestration (waterfall, parallel, queue)
β βββ kafka/
β β βββ kafkaService.js # Telemetry producer & consumer
β βββ db/
β β βββ mongoClient.js # MongoDB connection & fallback in-memory store
β β βββ models.js # Schemas for Clusters, Volumes, Telemetry, Audits
β βββ routes/
β βββ clusterRoutes.js # Cluster management & node topology endpoints
β βββ volumeRoutes.js # Volume CRUD & CSI provision endpoints
β βββ telemetryRoutes.js # Historical time-series query endpoints
β
βββ client/ # React + jQuery + C3.js + Bootstrap Frontend
β βββ package.json # Includes "homepage": "./" for GitHub Pages
β βββ public/
β β βββ index.html # HTML5 shell loading Bootstrap 5 & C3 styles
β βββ src/
β βββ index.js
β βββ App.jsx # Main container
β βββ styles/
β β βββ storage-theme.css # Dark theme styling & responsive layout
β βββ components/
β β βββ Navbar.jsx # Storage platform navigation & Mode badge
β β βββ ClusterOverview.jsx # Node health cards & aggregate stats
β β βββ C3TelemetryChart.jsx # 4 C3.js (c3j) time-series charts
β β βββ VolumeManager.jsx # Volume allocation & storage attachment status
β β βββ OperatorStatus.jsx # K8s CRD reconciliation live event log
β βββ services/
β βββ websocket.js # Client-side WebSocket streaming consumer
β βββ mockTelemetryService.js # In-browser mock engine for GitHub Pages demo
β
βββ scripts/ # Python & Bash Automation
βββ simulate_ai_workload.py # Distributed PyTorch training I/O generator
βββ benchmark_csi.py # CSI volume mount & latency benchmark
βββ k8s_setup.sh # Kind/Colima multi-node cluster bootstrap
βββ k8s_teardown.sh # Kind cluster & Colima teardown script
cd client
npm install
npm startAccess at http://localhost:3000 with 4 live C3.js streaming charts, interactive AI checkpoint burst simulations, and volume provisioning.
Interactive Video Screen Recording Flow:
β‘ Simulate AI Checkpoint Burst: In the navbar, triggers a synchronous 940k+ write IOPS spike and temporary latency increase, automatically recovering to baseline after 8 seconds.οΌ Provision Volume: Above the table, dynamically allocates a new volume (e.g., 1500GB NVMe DirectStorage) and updates the Storage Pool Donut chart.β Migrate: On any volume row, demonstrates live non-disruptive pod/volume migration between nodes.π Reconcile CRDs: Triggers a manual health verification pass in the Kubernetes Operator log terminal.
cd server
npm install
npm start- API Gateway Port:
http://localhost:5000(WebSocket Hub onws://localhost:5001) - Interactive Swagger UI:
http://localhost:5000/api-docs - Raw OpenAPI 3.0 Spec:
http://localhost:5000/api-docs/swagger.json(or view statically indocs/openapi.yaml)
chmod +x scripts/*.sh *.sh
# Bootstrap Colima, create 3-node Kind cluster, register CRDs, and apply samples
./scripts/k8s_setup.sh
# Start the Storage Operator against the live Kind cluster
cd k8s/operator && npm start
# Inspect live CRDs and node attachments with kubectl
kubectl get nodes -o wide
kubectl get distributedstorageclusters -A
kubectl get storagevolumeclaims -A
# Tear down Kind cluster when finished (optional: add --all to stop Colima)
./scripts/k8s_teardown.shpython3 scripts/simulate_ai_workload.py --nodes 3 --duration 30 --checkpoint-interval 10
python3 scripts/benchmark_csi.py --iterations 15chmod +x test.sh
./test.shOr test components individually:
# Server & Systems tests (Node.js built-in runner)
cd server && npm test
# Python storage formulas test (Python unittest)
python3 scripts/test_scripts.py
# Client component & mock tests
cd client && npm test -- --watchAll=false