机器/算力租赁与存储租赁(rental)
租赁是一个独立的算力售卖模块:用户以"租赁实例"的形式按量或按天租用一段算力(含 GPU),
每个租赁实例是独立于 Notebook 的独立 Pod,通过泛域名访问。
默认关闭,需配置 ENABLE_RENTAL=True(install/kubernetes/cube/overlays/config/config.py:712)开启。
后端:模型
myapp/models/model_rental_instance.py,视图myapp/views/view_rental.py。
租赁实例的关键属性
| 字段 | 取值 | 含义 |
|---|---|---|
rental_type |
single_gpu / whole_machine |
租赁类型:单卡 / 整机 |
charge_mode |
on_demand / daily |
计费方式:按量计费 / 按天计费 |
price_per_hour |
数值 | 每小时单价(按量计费用) |
price_text |
文本 | 价格描述文本(展示用) |
auto_renew |
true/false | 是否自动续费 |
image_category |
ide / dev / model_market / inference / custom |
实例运行的镜像类目(在线 IDE / 开发 / 模型市场应用 / 推理 / 自定义) |
resource_cpu / resource_memory / resource_gpu |
— | 申请的 CPU / 内存 / GPU |
- 计费:按量计费按使用时长 ×
price_per_hour;按天计费的费用从账单Bill表读取 (见model_rental_instance.py:252-258),与计量计费体系打通。 - 镜像类目
image_category决定实例跑什么:如ide跑在线 IDE(jupyter 等)、model_market跑 AIHub 应用、inference跑推理,具体配置存在image_config(JSON)里。
使用方式(界面)
- 管理员开启
ENABLE_RENTAL并准备好可租赁的镜像/资源。 - 用户在租赁页选择租赁类型(单卡/整机)、计费方式(按量/按天)、镜像类目与资源规格,创建租赁实例。
- 平台拉起独立 Pod,并分配泛域名访问入口;按所选计费方式计费,可选自动续费。
- 费用与账单在计量计费中查看(按天计费走
Bill表)。
字段默认值与完整生命周期见
myapp/models/model_rental_instance.py、myapp/views/view_rental.py。 多租户开启时,租赁实例同样按租户隔离,见 多租户隔离.md。
存储租赁(StorageLease / 共享盘)
存储租赁是独立于机器租赁的存储售卖模块:单独租用 / 扩容 / 释放、单独按小时计费, 与租赁实例解耦(建盘即起算计费,与是否挂载无关)。
后端:模型
myapp/models/model_storage_lease.py,视图myapp/views/view_storage_lease.py;前端pages/StorageLease。
两类存储记录
| 类型 | is_workspace |
挂载点 | 说明 |
|---|---|---|---|
| 用户 workspace | True |
/mnt/$username |
每 用户+集群 唯一,惰性自动创建、不可删除(仅"删数据"逃生口);默认大小 = 免费额度,仅可扩容 |
| 普通共享盘 | False |
/mnt/$name |
模型已预留(按盘名挂载、可多绑到租赁实例的 storage_lease_id),v1 暂不开放,当前版本以 workspace 为主 |
存储后端
两类都创建为 PVC(PVC 名 storagelease-{id}):
- 配置了
StorageClass→ 真实容量限额,支持在线 resize 扩容; - 未配置(读不到 StorageClass)→ 以 hostpath 方式建 PVC,容量为名义值(大小不强制)。
计费规则(事件分段,不做定时刷新)
- 触发时机:建盘 / 扩容 / 释放时落一段账单,按
start_time → end_time分段计费;在途账单end_time为空,释放时结算定格; - 计费公式:
应计容量 = max(0, size − 免费额度),金额 = 应计容量 × RENTAL_DATADISK_PRICE_PER_GB_HOUR × 小时数; - 免费额度:workspace 免
RENTAL_WORKSPACE_FREE_GB(默认 20G),普通盘无免费额度;额度内不出账(如 workspace ≤ 20G 完全免费); - 容量上限:
RENTAL_STORAGE_MAX(默认 10000G); - 账单
bill_id按 盘id+段起点 唯一,一段一条,欠费可按用户释放。
与租赁实例的关系
- 租赁实例默认挂载用户 workspace(
/mnt/$username),存储独立于实例生命周期,实例释放后数据保留; - 实例上的
storage_lease_id字段(逗号分隔共享盘名)为未来"一实例多绑共享盘"预留,v1 留空; - 扩容 / 释放走专用端点(不在普通编辑表单里),释放才删数据。