# 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]]