Runner
1. 概述
Runner 是 CSGHub 平台中负责执行模 型训练、推理、任务调度等计算任务的核心组件。
通过 Runner,可以实现与主控制端(CSGHUB Server)的通信,并在 Kubernetes 集群中动态创建与销毁用户工作负载。
本 Chart 通过 Helm 提供标准化部署方式,支持灵活配置、外部依赖集成以及自动化资源管理。
2. 环境要求
| 项目 | 说明 |
|---|---|
| Kubernetes 版本 | v1.33+ |
| Helm 版本 | v3.12+ |
| 网络要求 | 集群节点需能访问 CSGHub Server 与外部镜像仓库(如果内部镜像仓库被禁用) |
| 权限要求 | 具备 cluster-admin 或能创建命名空间与 RBAC 资源的权限(部署过程中会自动创建) |
3. 开始部署
-
添加 Helm 仓库
helm repo add csghub https://charts.opencsg.com/csghubhelm repo update -
创建命名空间(可选)
kubectl create namespace csghub -
部署 Runner
以下信息从 CSGHub 主服务处获取:
-
domain这里需要提供一个二级域名用于暴露 runner 服务。
如果提供的域名是
example.com,服务将暴露在runner.example.com下。 -
externalUrl⚠️ 必填(standalone 模式)helm get notes csghub -n csghub | grep -A 6 'Access your CSGHub'获取 CSGHub 对应的URL。
-
hubAPIToken⚠️ 必填(standalone 模式)kubectl get cm csghub-core -o yaml -n csghub | grep 'API_TOKEN' | awk '{print $NF}' -
originClusterIDrunner 集群的唯一标识符,会作为
STARHUB_SERVER_CLUSTER_ID写入 ConfigMap。 -
region这是一个自定义的参数,用来标识集群的区域,例如
cn-north。 -
registryhelm get notes csghub -n csghub | grep -A 8 'Distribution Registry'分别获取字段
<domain>,username,password。insecure根据externalUrl是否启用 HTTPS加密访问决定。 -
objectStorehelm get notes csghub -n csghub | grep -A 9 'Minio'上面命令中提供了
endpoint,accessKey,secretKey。bucket,region,pathStyle是固定值secure根据externalUrl是否启用 HTTPS 加密访问决定。
-
-
执行部署操作
💡 提示:
- 对象存储和容器镜像仓库可以直接对接外部的其他基础设施。
注意:建议将自定义配置写入 custom-values.yaml,方便后续升级与版本管理。
helm install runner csghub/runner \
--namespace csghub \
--create-namespace \
--set global.gateway.external.domain="example.com" \
--set externalUrl="<csghub external_url>" \
--set hubAPIToken="<csghub hub_api_token>" \
--set runner.region="<region name>" \
--set registry.registry="<csghub registry>" \
--set registry.repository="csghub" \
--set registry.username="<csghub registry username>" \
--set registry.password="<csghub registry password>" \
--set registry.insecure=<true|false> \
--set objectStore.endpoint="<csghub minio>" \
--set objectStore.accessKey="<csghub minio username>" \
--set objectStore.secretKey="<csghub minio password>" \
--set objectStore.bucket="csghub-runner" \
--set objectStore.region="cn-north-1" \
--set objectStore.secure=false \
--set objectStore.pathStyle=true
国内部署(使用国内镜像仓库加速拉取镜像):
helm install runner csghub/runner \
--namespace csghub \
--create-namespace \
--set global.gateway.external.domain="example.com" \
--set externalUrl="<csghub external_url>" \
--set hubAPIToken="<csghub hub_api_token>" \
--set runner.region="<region name>" \
--set registry.registry="<csghub registry>" \
--set registry.repository="csghub" \
--set registry.username="<csghub registry username>" \
--set registry.password="<csghub registry password>" \
--set registry.insecure=<true|false> \
--set objectStore.endpoint="<csghub minio>" \
--set objectStore.accessKey="<csghub minio username>" \
--set objectStore.secretKey="<csghub minio password>" \
--set objectStore.bucket="csghub-runner" \
--set objectStore.region="cn-north-1" \
--set objectStore.secure=false \
--set objectStore.pathStyle=true \
--set global.image.registry="registry.opencsg.com" \
--set global.imageRegistry="registry.opencsg.com/opencsghq"
4. 配置说明
v2.3.0 字段结构调整: 部分字段路径发生变更,参见下方变更说明。
4.1 全局配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| global.gateway.external.domain | csghub.example.com | 平台基础访问域名 |
| global.gateway.tls.enabled | false | 是否启用 TLS |
| global.image.tag | - | 镜像版本号 |
4.2 服务配置
| 参数 | 默认 值 | 说明 |
|---|---|---|
| name | runner | 用于标识 runner 相关资源的命名(包含对外暴露的域名) |
| runner.region | region-0 | Runner 所属区域标识 |
| runner.interval | 60 | Runner 与 Server 通信间隔(秒) |
| runner.namespace | spaces | 用户工作负载的默认命名空间 |
| externalUrl | - | ⚠️ 必填(standalone)。CSGHub 主站访问地址 |
| hubAPIToken | - | ⚠️ 必填(standalone)。CSGHub API 认证 Token |
| originClusterID | "" | runner 集群唯一标识符,写入 STARHUB_SERVER_CLUSTER_ID(非必填) |
| runner.mergingNamespace | disable | 命名空间合并模式(multi/single/disable) |
| space.usePublicDomain | true | 是否使用公网域名访问应用(v2.3.0 起路径由 runner.usePublicDomain 变更为 space.usePublicDomain) |
| runner.allowCpuOnGpuNodes | false | 🆕 v2.3.0 新增。控制纯 CPU 工作负载是否能调度到 GPU 节点 |
4.3 包与镜像管理
| 参数 | 默认值 | 说明 |
|---|---|---|
| space.pipIndexUrl | https://pypi.tuna.tsinghua.edu.cn/simple/ | 自定义 pip 源(v2.3.0 起路径从 runner.pipIndexUrl 变更) |
| model.dockerRegBase | nil | 模型镜像仓库地址(v2.3.0 起字段名从 model.registry 变更) |
| model.deployTimeoutInMin | 60 | 推理实例部署超时时间(v2.3.0 起字段名从 model.deployTimeout 变更,单位从秒改为分钟) |
4.4 GPU配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| runner.gpuModelLabel.typeLabel | nvidia.com/gpu.product | GPU 型号标签 |
| runner.gpuModelLabel.capacityLabel | nvidia.com/gpu | GPU 容量标签 |
| runner.gpuModelLabel.memLabel | nvidia.com/gpu.memory | GPU 显存标签 |
| runner.gpuModelLabel.xpuType | GPU | XPU 类型标识 |
4.5 KnativeServing配置
💡 提示:自 v1.12.0 开始,以下参数弃用,仅用作向前兼容。
| 参数 | 默认值 | 说明 |
|---|---|---|
| knative.serving.domain | example.com | Knative 服务域名后缀 |
| knative.serving.services | [] | 兼容旧版本配置(已废弃) |
| knative.serving.autoscaler.enableScaleToZero | true | 启用 KSVC 实例自动关闭 |
| knative.serving.autoscaler.scaleToZeroPodRetentionPeriod | 60m | KSVC实例关闭的容忍时间 |
4.6 RBAC配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| rbac.create | true | 是否自动创建 SA、Role、RoleBinding |
| rbac.serviceAccountName | "" | 自定义 SA 名称;留空时默认派生为 <release>-<name>(例如 helm install runner 时为 runner-runner) |
4.7 日志与监控
| 参数 | 默认值 | 说明 |
|---|---|---|
| logging.level | info | 日志等级(info/debug/error) |
| logcollector.enabled | false | 是否启用日志收集器 |
| logcollector.loki.address | "" | Loki 服务地址 |
| tempo.address | "" | Tempo 链路追踪地址 |
-
loki 服务默认在 CSGHub 侧未向外暴露,需要调整 CSGHub 配置
loki.gateway.enabled=true暴露服务后才可使用。 -
tempo 服务暂时不支持对外暴露,会在后面支持。