{"id":28955899,"url":"https://github.com/slinkyproject/slurm-bridge","last_synced_at":"2025-10-07T12:51:50.508Z","repository":{"id":298571601,"uuid":"999776051","full_name":"SlinkyProject/slurm-bridge","owner":"SlinkyProject","description":"Run Slurm as a Kubernetes scheduler. A Slinky project.","archived":false,"fork":false,"pushed_at":"2025-09-11T19:08:30.000Z","size":997,"stargazers_count":35,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-11T22:14:59.548Z","etag":null,"topics":["hpc","kubernetes","scheduler","slinky","slurm"],"latest_commit_sha":null,"homepage":"https://slinky.ai/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SlinkyProject.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSES/Apache-2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-10T19:11:05.000Z","updated_at":"2025-09-11T19:08:33.000Z","dependencies_parsed_at":"2025-06-11T20:50:46.879Z","dependency_job_id":"593e95ee-63a8-464a-af93-7826019b2afc","html_url":"https://github.com/SlinkyProject/slurm-bridge","commit_stats":null,"previous_names":["slinkyproject/slurm-bridge"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/SlinkyProject/slurm-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlinkyProject%2Fslurm-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlinkyProject%2Fslurm-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlinkyProject%2Fslurm-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlinkyProject%2Fslurm-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SlinkyProject","download_url":"https://codeload.github.com/SlinkyProject/slurm-bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlinkyProject%2Fslurm-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274725704,"owners_count":25338390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hpc","kubernetes","scheduler","slinky","slurm"],"created_at":"2025-06-23T20:12:04.913Z","updated_at":"2025-10-07T12:51:50.478Z","avatar_url":"https://github.com/SlinkyProject.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slurm Bridge\n\n\u003cdiv align=\"center\"\u003e\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=for-the-badge)](./LICENSES/Apache-2.0.txt)\n[![Tag](https://img.shields.io/github/v/tag/SlinkyProject/slurm-bridge?style=for-the-badge)](https://github.com/SlinkyProject/slurm-bridge/tags/)\n[![Go-Version](https://img.shields.io/github/go-mod/go-version/SlinkyProject/slurm-bridge?style=for-the-badge)](./go.mod)\n[![Last-Commit](https://img.shields.io/github/last-commit/SlinkyProject/slurm-bridge?style=for-the-badge)](https://github.com/SlinkyProject/slurm-bridge/commits/)\n\n\u003c/div\u003e\n\nRun [Slurm] as a [Kubernetes] scheduler. A [Slinky] project.\n\n## Table of Contents\n\n\u003c!-- mdformat-toc start --slug=github --no-anchors --maxlevel=6 --minlevel=1 --\u003e\n\n- [Slurm Bridge](#slurm-bridge)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n  - [Features](#features)\n    - [Slurm](#slurm)\n  - [Requirements](#requirements)\n  - [Limitations](#limitations)\n  - [Installation](#installation)\n  - [Documentation](#documentation)\n  - [Support and Development](#support-and-development)\n  - [License](#license)\n\n\u003c!-- mdformat-toc end --\u003e\n\n## Overview\n\n[Slurm] and [Kubernetes] are workload managers originally designed for different\nkinds of workloads. Kubernetes excels at scheduling workloads that run for an\nindefinite amount of time, with potentially vague resource requirements, on a\nsingle node, with loose policy, but can scale its resource pool infinitely to\nmeet demand; Slurm excels at quickly scheduling workloads that run for a finite\namount of time, with well-defined resource requirements and topology, on\nmultiple nodes, with strict policy, and a known resource pool.\n\nThis project enables the best of both workload managers. It contains a\n[Kubernetes] scheduler to manage select workloads from Kubernetes, which allows\nfor co-location of Kubernetes and Slurm workloads within the same cluster. This\nmeans the same hardware can be used to run both traditional HPC and cloud-like\nworkloads, reducing operating costs.\n\nUsing `slurm-bridge`, workloads can be submitted from within a Kubernetes\ncontext as a `Pod`, `PodGroup`, `Job`, `JobSet`, or `LeaderWorkerSet` and from a\nSlurm context using `salloc` or `sbatch`. Workloads submitted via Slurm will\nexecute as they would in a Slurm-only environment, using `slurmd`. Workloads\nsubmitted from Kubernetes will have their resource requirements translated into\na representative Slurm job by `slurm-bridge`. That job will serve as a\nplaceholder and will be scheduled by the Slurm controller. Upon resource\nallocation to a K8s workload by the Slurm controller, `slurm-bridge` will bind\nthe workload's pod(s) to the allocated node(s). At that point, the kubelet will\nlaunch and run the pod the same as it would within a standard Kubernetes\ninstance\n\n![\"Slurm Bridge Architecture\"](./docs/_static/images/slurm-bridge_big-picture.svg)\n\nFor additional architectural notes, see the [architecture] docs.\n\n## Features\n\n### Slurm\n\nSlurm is a full featured HPC workload manager. To highlight a few features:\n\n- [**Priority**][slurm-priority]: assigns priorities to jobs upon submission and\n  on an ongoing basis (e.g. as they age).\n- [**Preemption**][slurm-preempt]: stop one or more low-priority jobs to let a\n  high-priority job run.\n- [**QoS**][slurm-qos]: sets of policies affecting scheduling priority,\n  preemption, and resource limits.\n- [**Fairshare**][slurm-fairshare]: distribute resources equitably among users\n  and accounts based on historical usage.\n\n## Requirements\n\n- **Kubernetes Version**: \u003e=\n  [v1.29](https://kubernetes.io/blog/2023/12/13/kubernetes-v1-29-release/)\n- **Slurm Version**: \u003e=\n  [25.05](https://www.schedmd.com/slurm-version-25-05-0-is-now-available/)\n\n## Limitations\n\n- Exclusive, whole node allocations are made for each pod.\n\n## Installation\n\nCreate a secret for slurm-bridge to communicate with Slurm.\n\n```sh\nexport SLURM_JWT=$(scontrol token username=slurm lifespan=infinite)\nkubectl create namespace slurm-bridge\nkubectl create secret generic slurm-bridge-jwt-token --namespace=slinky --from-literal=\"auth-token=$SLURM_JWT\" --type=Opaque\n```\n\nInstall the slurm-bridge scheduler:\n\n```sh\nhelm install slurm-bridge oci://ghcr.io/slinkyproject/charts/slurm-bridge \\\n  --namespace=slinky --create-namespace\n```\n\nFor additional instructions, see the [quickstart] guide.\n\n## Documentation\n\nProject documentation is located in the [docs] directory of this repository.\n\nSlinky documentation can be found [here][slinky-docs].\n\n## Support and Development\n\nFeature requests, code contributions, and bug reports are welcome!\n\nGithub/Gitlab submitted issues and PRs/MRs are handled on a best effort basis.\n\nThe SchedMD official issue tracker is at \u003chttps://support.schedmd.com/\u003e.\n\nTo schedule a demo or simply to reach out, please\n[contact SchedMD][contact-schedmd].\n\n## License\n\nCopyright (C) SchedMD LLC.\n\nLicensed under the\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) you\nmay not use project except in compliance with the license.\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n\n\u003c!-- Links --\u003e\n\n[architecture]: ./docs/architecture.md\n[contact-schedmd]: https://www.schedmd.com/slurm-resources/contact-schedmd/\n[docs]: ./docs/\n[kubernetes]: https://kubernetes.io/\n[quickstart]: ./docs/quickstart.md\n[slinky]: https://slinky.ai/\n[slinky-docs]: https://slinky.schedmd.com/\n[slurm]: https://slurm.schedmd.com/overview.html\n[slurm-fairshare]: https://slurm.schedmd.com/fair_tree.html\n[slurm-preempt]: https://slurm.schedmd.com/preempt.html\n[slurm-priority]: https://slurm.schedmd.com/priority_multifactor.html\n[slurm-qos]: https://slurm.schedmd.com/qos.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslinkyproject%2Fslurm-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslinkyproject%2Fslurm-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslinkyproject%2Fslurm-bridge/lists"}