跳到主要内容

Runner 部署指南

📘 概述

CSGHUB Runner 是 CSGHub 平台中负责执行模型训练、推理、任务调度等计算任务的核心组件。

通过 Runner,可以实现与主控制端(CSGHUB Server)的通信,并在 Kubernetes 集群中动态创建与销毁用户工作负载。

本 Chart 通过 Helm 提供标准化部署方式,支持灵活配置、外部依赖集成以及自动化资源管理。


⚙️ 环境要求

项目说明
Kubernetes 版本v1.28+
Helm 版本v3.12+
网络要求集群节点需能访问 CSGHub Server 与外部镜像仓库(如果内部镜像仓库被禁用)
权限要求具备 cluster-admin 或能创建命名空间与 RBAC 资源的权限(部署过程中会自动创建)

📦 安装步骤

1️⃣ 添加 Helm 仓库

helm repo add csghub https://charts.opencsg.com/repository/csghub
helm repo update

2️⃣ 创建命名空间(可选)

kubectl create namespace csghub

3️⃣ 部署 Runner

以下信息从 CSGHub 主服务处获取:

  • domain

    这里需要提供一个二级域名用于暴露 runner 服务。

    如果提供的域名是example.com,服务将暴露在runner.example.com下。

  • externalUrl

    helm get notes csghub -n csghub | grep -A 6 'Access your CSGHub'

    获取 CSGHub 对应的URL。

  • hubAPIToken

    kubectl get cm csghub-core -o yaml -n csghub | grep 'API_TOKEN' | awk '{print $NF}'
  • region

    这是一个自定义的参数,用来标识集群的区域,例如cn-north

  • registry.*

    helm get notes csghub -n csghub | grep -A 8 'Minio Console'

    分别获取字段<domain>, username, passwordinsecure 根据 externalUrl 是否启用 HTTPS加密访问决定。

  • objectStore

    helm get notes csghub -n csghub | grep -A 8 'Distribution Registry'

    上面命令中提供了endpoint, accessKey, secretKey

    • bucket, region,pathStyle是固定值
    • secure 根据 externalUrl 是否启用 HTTPS 加密访问决定。
  • 执行部署操作

    提示: 对象存储和容器镜像仓库可以直接对接外部的其他基础设施。

    helm install runner csghub/runner \
    --namespace csghub \
    --create-namespace \
    --set global.ingress.domain="example.com" \
    --set externalUrl="<csghub external_url>" \
    --set hubAPIToken="<csghub hub_api_token>" \
    --set 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="<if csghub registry secure>" \
    --set objectStore.endpoint="<csghub minio>" \
    --set objectStore.accessKey="<csghub minio username>" \
    --set objectStore.secretKey="<csghub minio password>" \
    --set objectStore.bucket="csghub-registry" \
    --set objectStore.region="cn-north-1" \
    --set objectStore.secure="false" \
    --set objectStore.pathStyle="true"

💡 提示:建议将自定义配置写入 custom-values.yaml,方便后续升级与版本管理。


🧾 配置说明(基于 values.yaml)

全局配置(global)

参数默认值说明
global.ingress.domainexample.com平台基础访问域名
global.ingress.tls.enabledfalse是否启用 TLS
global.image.tag-镜像版本号

Runner 主配置

参数默认值说明
namerunner用于标识 runner 相关资源的命名(包含对外暴露的域名)
regionregion-0Runner 所属区域标识
interval60Runner 与 Server 通信间隔(秒)
namespacespaces用户工作负载的默认命名空间
autoConfiguretrue是否自动安装 knative、argo、lws 等依赖组件
kymlModeupdateautoConfigure 更新初始化集群资源的模式(create/update/replace)
mergingNamespacedisable命名空间合并模式(multi/single/disable)
usePublicDomaintrue是否使用公网域名访问应用(false 会导致多项功能访问受限)

包与镜像管理

参数默认值说明
pipIndexUrlhttps://pypi.tuna.tsinghua.edu.cn/simple/自定义 pip 源
extraBuildArgs[]Kaniko 额外构建参数
modelRegistryOpenCSG ACR模型镜像仓库地址

GPU 配置

参数默认值说明
gpuModelLabel.typeLabelnvidia.com/gpu.productGPU 型号标签
gpuModelLabel.capacityLabelnvidia.com/gpuGPU 容量标签

Knative Serving 配置

💡 提示:自 v1.12.0 开始,以下参数弃用,仅用作向前兼容。

参数默认值说明
knative.serving.domainexample.comKnative 服务域名后缀
knative.serving.services[]兼容旧版本配置(已废弃)

RBAC 配置

参数默认值说明
rbac.createtrue是否自动创建 SA、Role、RoleBinding
rbac.serviceAccountNamerunner-adminSA 名称,【暂时不可修改】

日志与监控

参数默认值说明
logging.levelinfo日志等级(info/debug/error)
logcollector.enabledfalse是否启用日志收集器
logcollector.loki.address""Loki 服务地址
tempo.address""Tempo 链路追踪地址
  • loki 服务默认在 CSGHub 侧未向外暴露,需要调整 CSGHub 配置loki.ingress.enabled=true暴露服务后才可使用。

  • tempo 服务暂时不支持对外暴露,会在后面支持。


外部资源配置

🔹 镜像仓库

registry:
registry: "registry.example.com"
repository: "csghub"
username: "user"
password: "pass"
insecure: false

🔹 对象存储

objectStore:
endpoint: "https://minio.example.com"
accessKey: "admin"
secretKey: "password"
bucket: "csghub-registry"
region: "us-east-1"
secure: true
pathStyle: true

资源与调度配置

参数默认值说明
resourcesPod 的 requests/limits 配置
nodeSelector节点选择器
tolerations[]容忍度配置
affinity亲和性配置

🔍 验证部署

部署完成后,可通过以下命令验证运行状态:

kubectl get pods -n csghub
kubectl get svc -n csghub

查看 Runner 日志:

kubectl logs -f deploy/runner-runner -n csghub

🔄 升级与卸载

升级 Chart

helm upgrade runner csghub/runner -n csghub -f custom-values.yaml

卸载 Chart

helm uninstall runner -n csghub

🧠 常见问题

问题解决方案
Runner 无法连接 Server检查 externalUrlhubAPIToken 是否配置正确
Knative 服务未自动安装确认 autoConfigure: true 且集群具备相应权限
GPU 任务未调度成功检查节点标签与 GPU 驱动是否安装正确
镜像拉取失败确认镜像仓库访问权限与 image.pullSecrets 配置