专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
ghcr.io/stackhpc/slurm-docker-cluster

ghcr.io/stackhpc/slurm-docker-cluster:9979627

ghcr.iolinux/amd649979627大小: 未知更新于 2026年5月23日

Slurm Docker 集群

这是一个使用 Kubernetes 的多容器 Slurm 集群。Slurm 集群 Helm 图表会创建一个命名卷,用于 MySQL 数据文件的持久化存储。默认情况下,它还会安装 RookNFS Helm 图表(也位于此仓库中),以在 Slurm 集群节点间提供共享存储。

依赖项

需满足以下要求:

  • 一个 Kubernetes 集群
  • 本地安装的 Helm、kubectl
  • Helm
  • kubectl

容器与卷

Helm 图表将运行以下容器:

  • login
  • mysql
  • slurmdbd
  • slurmctld
  • slurmd(默认 2 个副本)

Helm 图表将创建以下命名卷:

  • var_lib_mysql(挂载至 /var/lib/mysql)

还需要一个挂载至 /home 的命名 ReadWriteMany (RWX) 卷,该卷可以是外部卷,也可使用提供的 rooknfs 图表目录部署(参见“部署集群”)。

配置集群

slurm-cluster-chart/files 中的所有配置文件将在启动时挂载到容器中,以配置各自的服务。注意,对这些文件的更改不会全部传播到现有部署(参见“重新配置集群”)。Helm 图表的 values.yaml 文件中可找到其他参数。注意,其中部分值也需在集群重启后才会生效(参见“重新配置集群”)。

部署集群

生成集群密钥

仅在初始部署时运行以下命令:

./generate-secrets.sh [namespace]

这会在目标命名空间中生成一组供 Slurm 集群使用的密钥。如需重新生成这些密钥,请参见“重新配置集群”。

请务必记录 Open Ondemand 凭据,通过浏览器访问集群时需要使用。

连接 RWX 卷

集群节点间的共享存储需要 ReadWriteMany (RWX) 卷。默认情况下,Rook NFS Helm 图表会作为 Slurm 集群图表的依赖项安装,以提供支持 RWX 的 Storage Class 用于所需的共享卷。如果目标 Kubernetes 集群已有应使用的存储类,则应在 values.yaml 中将 storageClass 设置为该现有类的名称,并通过设置 rooknfs.enabled = false 禁用 RookNFS 依赖项。无论哪种情况,均可通过设置 storage.capacity 的值来配置已配置 RWX 卷的存储容量。

使用 RookNFS 提供共享存储卷时,有关更多配置选项,请参见单独的 RookNFS 图表 values.yaml。

提供公钥

要通过 ssh 访问集群,需提供公钥。可通过运行以下命令添加本地主机的所有公钥:

./publish-keys.sh [namespace]

其中 namespace 是 Slurm 集群图表将部署到的命名空间(即使用 helm install -n ...)。这将在相应命名空间中创建一个供 Slurm 集群使用的 Kubernetes Secret。省略命名空间参数将在默认命名空间中安装密钥。

使用 Helm 部署

使用适当的 kubeconfig 文件配置 kubectl 后,使用 Helm 图表部署集群:

helm install slurm-cluster-chart

[!NOTE] 如果使用 RookNFS 依赖项,则必须在安装 Slurm 集群图表之前运行以下命令:

> helm dependency update slurm-cluster-chart
>

后续版本可使用以下命令部署:

helm upgrade slurm-cluster-chart

注意:使用 helm upgrade 更新集群时,如果 Slurm 队列中有运行中的作业,预升级钩子将阻止升级。尝试升级会将所有 Slurm 节点设置为 DRAINED 状态。如果因运行中作业导致升级失败,可等待运行中作业完成后重试升级,或作为特权用户访问集群手动解除节点排水状态。也可通过使用 --no-hooks 标志运行 helm upgrade 绕过钩子(可能导致运行中作业丢失)。

访问集群

使用以下命令获取登录节点的外部 IP 地址:

LOGIN=$(kubectl get service login -o jsonpath="{.status.loadBalancer.ingress[0].ip}")

然后以 rocky 用户身份连接集群:

ssh rocky@$LOGIN

在 shell 中执行 Slurm 命令,例如:

[root@slurmctld /]# sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
normal* up 5-00:00:00 2 idle c[1-2]

运行 MPI 基准测试

容器中包含 Intel MPI 基准测试。可使用 mpirun 和 srun 运行,也可使用 apptainer 作为容器化工作负载运行。

作业脚本示例:

  • srun:
#!/usr/bin/env bash

#SBATCH -N 2
#SBATCH --ntasks-per-node=1

echo $SLURM_JOB_ID: $SLURM_JOB_NODELIST
srun /usr/lib64/openmpi/bin/mpitests-IMB-MPI1 pingpong
  • mpirun:
#!/usr/bin/env bash

#SBATCH -N 2
#SBATCH --ntasks-per-node=1

echo $SLURM_JOB_ID: $SLURM_JOB_NODELIST
/usr/lib64/openmpi/bin/mpirun --prefix /usr/lib64/openmpi mpitests-IMB-MPI1 pingpong
  • apptainer:
#!/usr/bin/env bash
#SBATCH -N2
#SBATCH --ntasks-per-node=1
MPI_CONTAINER_TAG="main"
echo SLURM_JOB_NAME: $SLURM_JOB_NAME
echo $SLURM_JOB_ID: $SLURM_JOB_NODELIST
srun singularity exec docker://ghcr.io/stackhpc/mpitests-container:${MPI_CONTAINER_TAG} /usr/lib64/openmpi/bin/mpitests-IMB-MPI1 pingpong

注意:mpirun 脚本假设以用户“rocky”身份运行。如果以 root 身份运行,需包含 --allow-run-as-root 参数。

重新配置集群

配置文件更改

对 slurm-cluster-chart/files/slurm.conf 中 Slurm 配置的更改,可通过运行以下命令传播(可能需要几秒钟)到除 slurmdbd pod 外所有 pod 的 /etc/slurm/slurm.conf:

helm upgrade slurm-cluster-chart/

然后可在 Slurm pod 内以 root 身份运行 scontrol reconfigure 读取新的 Slurm 配置。slurm.conf 文档指出,某些更改需要重启所有守护进程,此时需按以下说明重新部署 Slurm pod。

对其他配置文件(如 Munge 密钥等)的更改需要重新部署相应的 pod。

要重新部署 pod,请使用:

kubectl rollout restart deployment

用于 slurmdbd、login 和 mysql pod;使用:

kubectl rollout restart statefulset

用于 slurmd 和 slurmctld pod。

通常需要重启 slurmd、slurmctld、login 和 slurmdbd。

密钥更改

通过重新运行以下命令重新生成密钥:

./generate-secrets.sh

部分密钥持久化在卷中,因此轮换密钥需要完全拆除并重启这些卷及其挂载的 pod。运行:

kubectl delete deployment mysql
kubectl delete pvc var-lib-mysql
helm upgrade slurm-cluster-chart

然后重启其他依赖部署以传播更改:

kubectl rollout restart deployment slurmd slurmctld login slurmdbd

已知问题

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

轩辕镜像合规吗?轩辕镜像的合规是怎么做的?

镜像合规机制

轩辕镜像支持 docker push 上传本地镜像吗?

不支持 push

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

docker 无法连接轩辕镜像域名怎么办?

域名连通性排查

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

为什么拉取镜像的 :latest 标签,拿到的往往不是「最新」镜像?

latest 与「最新」

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/stackhpc/slurm-docker-cluster
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单。官方公众号:源码跳动。官方技术交流群:51517718。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单。官方公众号:源码跳动。官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.