是一个Flask应用程序,提供API用于通过各种调度器(如Kubernetes、Podman、Docker Swarm和SLURM)创建作业。它基本上将自身的JSON接口转换为对各种支持的后端的请求。
pman 与_pfcon_紧密耦合。pman 和 pfcon 通常作为一对部署,提供 pfcon 服务。
pman查看其实际运行的最简单方法是运行_miniChRIS-docker_。以下说明适用于_pman_的黑客和开发人员。
本节描述如何设置本地_pman_实例进行开发。
这些说明使用Docker和Docker Swarm在容器内运行_pman_以调度作业。启用代码更改的热重载。
shelldocker swarm init --advertise-addr 127.0.0.1 docker compose up -d
要使用docker stack deploy运行完整测试,请运行测试工具test_swarm.sh。
shell./test_swarm.sh
_pman_必须能够通过与Podman套接字通信来通过Podman调度容器。
shellsystemctl --user start podman.service export DOCKER_HOST="$(podman info --format '{{ .Host.RemoteSocket.Path }}')"
shellpython -m venv venv source venv/bin/activate pip install -r requirements/local.txt pip install -e .
shellpython -m pman
[***]
_pman_通过环境变量进行配置。有关其确切工作方式,请参阅pman/config.py中的源代码。
_pman_依赖_pfcon_在称为"storeBase"的目录中管理数据。"storeBase"是集群中每个节点都可见的存储空间。
对于使用Docker和Podman的单机部署,最佳解决方案是使用由_pfcon_挂载在/var/local/storeBase的本地卷。_pman_应配置为STORAGE_TYPE=docker_local_volume VOLUME_NAME=...。
在Kubernetes上,应使用单个PersistentVolumeClaim。它由_pfcon_挂载在/var/local/storeBase。_pman_应配置为STORAGE_TYPE=kubernetes_pvc VOLUME_NAME=...。
SLURM没有卷的概念,但SLURM集群通常使用在每个节点上相同路径挂载的NFS共享。_pman_应配置为STORAGE_TYPE=host STOREBASE=...,将共享挂载点指定为STOREBASE。
swarm 与 docker 的比较最初,_pman_与Docker Swarm API交互是为了支持多节点集群。然而,_pman_通常在单机上运行。开发环境、单机生产部署的CUBE的"主机"计算资源以及Power9超级计算机上的CUBE生产部署都是这种情况。Swarm模式主要是一种麻烦,其多节点能力测试不足。此外,多节点功能更好地由CONTAINER_ENV=kubernetes提供。
在_pman_ v4.1中,CONTAINER_ENV=docker作为新功能引入并成为默认配置。在此模式下,_pman_使用Docker Engine API而不是Swarm API,这对于单机用例更加方便。
CONTAINER_ENV=docker与Podman兼容。
已知Podman版本3或4可以工作。
配置用户能够设置资源限制。
[***]
| 环境变量 | 描述 |
|---|---|
SECRET_KEY | Flask密钥 |
CONTAINER_ENV | 以下之一: "swarm", "kubernetes", "cromwell", "docker" |
STORAGE_TYPE | 以下之一: "host", "docker_local_volume", "kubernetes_pvc" |
STOREBASE | 作业数据存储位置,当STORAGE_TYPE=host时有效,与VOLUME_NAME冲突 |
VOLUME_NAME | 数据卷名称,当STORAGE_TYPE=docker_local_volume或STORAGE_TYPE=kubernetes_pvc时有效 |
PFCON_SELECTOR | pfcon容器上的标签,可指定让pman自动发现VOLUME_NAME(默认: org.chrisproject.role=pfcon) |
CONTAINER_USER | 以UID:GID格式设置作业容器用户,可以是随机值范围 |
ENABLE_HOME_WORKAROUND | 如果设置为"yes",则设置作业环境变量HOME=/tmp |
SHM_SIZE | /dev/shm的大小(以mebibytes为单位)。(仅在Docker、Podman和Kubernetes中支持。) |
JOB_LABELS | CSV列表的key=value对,应用于容器作业的标签 |
JOB_LOGS_TAIL | (int) 作业日志的最大大小 |
IGNORE_LIMITS | 如果设置为"yes",则不对容器作业设置资源限制(用于不费力地使事情工作) |
REMOVE_JOBS | 如果设置为"no",则pman不会删除作业(用于调试) |
STOREAGE_TYPE=host当STORAGE_TYPE=host时,将STOREBASE指定为主机上的挂载点路径。
STOREAGE_TYPE=docker_local_volume对于单机实例,使用Docker/Podman本地卷作为"storeBase"。卷应在_pman_启动之前存在。可以通过以下两种方式之一识别它:
VOLUME_NAMEorg.chrisproject.role=pfcon的容器,并选择绑定到/var/local/storeBase的挂载点STORAGE_TYPE=kubernetes_pvc当STORAGE_TYPE=kubernetes_pvc时,VOLUME_NAME必须是配置为ReadWriteMany的PersistentVolumeClaim的名称。
在卷仅对特定UNIX用户可写的情况下(例如NFS支持的卷),CONTAINER_USER可用作解决方法。
当CONTAINER_ENV=kubernetes时适用
| 环境变量 | 描述 |
|---|---|
JOB_NAMESPACE | 创建作业的Kubernetes命名空间 |
NODE_SELECTOR | Pod的nodeSelector |
当CONTAINER_ENV=cromwell时适用
| 环境变量 | 描述 |
|---|---|
CROMWELL_URL | Cromwell URL |
TIMELIMIT_MINUTES | SLURM作业时间限制 |
有关其工作原理,请参见[***]
设置任意容器用户(例如CONTAINER_USER=***:***)可提高安全性,但会导致(不安全编写的)_ChRIS_插件失败。在某些情况下,ENABLE_HOME_WORKAROUND=yes可以使插件工作而无需更改其代码。
可以使用随机容器用户CONTAINER_USER=***-2147483647:***-2147483647,但考虑到pfcon的UID永远不会更改,这将导致一切中断。
_pman_的配置多年来变得混乱,因为它试图提供跨截然不同系统的接口。某些选项的混合搭配不受支持:
IGNORE_LIMITS=yes仅适用于CONTAINER_ENV=docker(或podman)。JOB_LABELS=...仅适用于CONTAINER_ENV=docker(或podman)和CONTAINER_ENV=kubernetes。CONTAINER_USER不适用于CONTAINER_ENV=cromwellCONTAINER_ENV=cromwell不转发环境变量。STORAGE_TYPE=host不支持Kubernetes来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速