How slinkyproject/slurm-bridge works
Slurm Bridge accepts Kubernetes workloads, admits and translates them into representative Slurm jobs, then uses Slurm allocations to place their pods on Kubernetes nodes. Its scheduler plugin is the main scheduling entry point; controllers reconcile pods and nodes, while DRA profiles and inventory support device-aware resource mapping. The README documents workload types and Slurm scheduling capabilities, but sampled excerpts do not show most scheduler, sync, or runnable implementations, so those links follow documented behavior and omit uncertain internal call chains.
Main entry points: slurmbridge.go Slurm scheduler plugin · main.go Controller manager · pod_controller.go Pod reconciler · node_controller.go Node reconciler
Components 18
Admission
- Admission service
cmd/admission/main.go - Pod admission
internal/admission/admission.go
Scheduling
- Scheduler process
cmd/scheduler/main.go - Slurm scheduler plugin
internal/scheduler/plugins/slurmbridge/slurmbridge.go - Workload translation
internal/utils/slurmjobir/slurmjobir.go - DRA profiles
internal/dra/registry.go - Node device inventory
internal/dra/inventory.go
Reconciliation
- Controller manager
cmd/controllers/main.go - Pod reconciler
internal/controller/pod/pod_controller.go - Node reconciler
internal/controller/node/node_controller.go
Slurm integration
- Slurm job sync
internal/runnable/slurmjob/slurmjob_runnable.go - Slurm node sync
internal/runnable/slurmnode/slurmnode_runnable.go
Other components
- Kubernetes submitter
- Kubernetes API
- Slurm REST service
- Slurm controller
- Kubelet
- Slurm submitter
Connections 21
- Kubernetes submitter → Kubernetes API: submits workload
- Admission service → Pod admission: registers webhook
- Pod admission → Kubernetes API: validates and defaults
- Kubernetes API → Scheduler process: provides pending pods
- Scheduler process → Slurm scheduler plugin: registers plugin
- Slurm scheduler plugin → Workload translation: translates workload
- Slurm scheduler plugin → DRA profiles: matches device profiles
- Slurm scheduler plugin → Node device inventory: uses device inventory
- Slurm scheduler plugin → Slurm REST service: submits representative job
- Slurm REST service → Slurm controller: requests scheduling
- Slurm controller → Slurm REST service: returns allocation
- Controller manager → Pod reconciler: starts reconciler
- Controller manager → Node reconciler: starts reconciler
- Pod reconciler → Slurm REST service: reads job allocation
- Pod reconciler → Kubernetes API: binds and updates pods
- Kubernetes API → Kubelet: provides bound pods
- Node reconciler → Slurm REST service: reads Slurm node state
- Node reconciler → Kubernetes API: updates node state
- Controller manager → Slurm job sync: starts job sync
- Controller manager → Slurm node sync: starts node sync
- Slurm submitter → Slurm controller: submits native jobs