# Slinky
Slinky は、[[Kubernetes]] 環境上で [[Slurm]] の運用とワークロードスケジューリングを可能にするオープンソースツールキット群である(公式には「Slurm in Kubernetes, Yes」の頭文字とされる)。ドキュメントは `https://slinky.schedmd.com/`、リポジトリ群は `https://github.com/SlinkyProject` で公開されている([[@2026__GTC__Orchestrate Next-Generation AI Workloads With Open-Source Slurm]])。
## アーキテクチャと主要コンポーネント
Slinky は主に以下の 2 つの統合アプローチを提供する:
1. **Slurm Operator**:
- Kubernetes クラスタ上で Slurm クラスタそのものをコンテナ(Pod)として展開・運用管理する [[Kubernetesオペレータ]]。
- 各コンピュートノードは `slurmd` プロセスを実行する Pod にマップされ、利用率メトリクスに基づく自動スケーリングをサポートする。
- ユーザーはログインノード Pod へ SSH し、従来の Slurm CLI(sbatch, srun 等)で対話する。ジョブのスケジューリングと実行は Slurm ネイティブのリソース管理層で行われ、Kubernetes は Pod レベルのオーケストレーションのみを担う。
- v1.1.0 では、K8s ノード名と Slurm 名を一致させる DaemonSet スケーリングモード、Pod トポロジ注入(`topology.slinky.slurm.net/spec` アノテーションによる Slurm 自動トポロジのトリガー)、および PodDisruptionBudget 対応が追加された。
2. **Slurm Bridge**:
- Slurm を Kubernetes の第 1 級スケジューラ(Kubernetes Scheduler Plugin)として機能させる連携コンポーネント。
- Kubernetes の Scheduling Framework(`PreEnqueue`, `PreFilter`, `Filter`, `PostFilter`)で Slurm が配置決定を行い、`PreBind` フェーズで [[Dynamic Resource Allocation (DRA)]] の `ResourceClaims` を生成する。
- Pod のリソース要求をバッチスクリプト不要の Slurm「外部ジョブ(external job)」に変換して Slurm 側でリソース計画を行い、実際のコンテナ起動は `kubelet` が担う。
- コンピュートノードは `slurmd` を動かすノードだけでなく、`slurmd` のない「外部ノード(external node)」も対象にでき、コンバージドシステムの構築を可能にする。
- v1.1.0(通称 DRAapalooza)では、ラベル付き K8s ノードからの Slurm 外部ノード自動生成、DRA GPU/CPU ドライバに対する ResourceClaims 発行、NVLink Compute Domain 設定(ベータ)、およびサブノード単位の資源割り当てアノテーション(`slurmjob.slinky.slurm.net/exclusive: false`)が導入された。
3. **補助ツール群**:
- Slurm の REST API へ Go 言語からアクセスするための Slurm Client ライブラリや各種コンテナイメージ群が含まれる。
## 関連
- 開発元: [[SchedMD]] / [[NVIDIA]]
- 対象システム: [[Slurm]] / [[Kubernetes]]
- 連携技術: [[Dynamic Resource Allocation (DRA)]] / [[トポロジ考慮型スケジューリング]] / [[Kubernetesオペレータ]]
- 出典: [[@2026__GTC__Orchestrate Next-Generation AI Workloads With Open-Source Slurm]]