产品 / 面向平台管理员
TAIP Billing
正式版按预留资源准确计费,避免重复计价,确保每笔记录借贷平衡。
TAIP Billing 按预留资源计费。Pod 调度到节点时开始计费,最后一个容器结束时停止,排队期间不收费;资源请求量采用与 kube-scheduler 一致的算法,包含 Sidecar、Init 容器、Pod Overhead 和原地扩缩容。Slurm 作业用量读取自 slurmdbd,与同一硬件上的 Kubernetes Pod 使用相同价格,slurmd 自身预留不重复计费。价目表按生效日期启用、不可修改,支持按 GPU 型号、资源池、优先级、StorageClass 和节点标签定价。金额以整数微单位存储,使用精确有理数运算,最终仅舍入一次。复式账本只允许追加,数据库拒绝修改记录或提交借贷不平的交易。平台通过 Pod 准入 Webhook、Kueue AdmissionCheck 和 Slurm 提交限制管控新任务;Pod Webhook 故障时放行,Kueue 按整组作业检查准入条件。管控可先以演练模式上线。账户所有者可查看支出、预算、预计可用时长和费用预估;平台团队可分析容量、毛利和资源效率,并每日与 Prometheus 数据交叉核对。
产品规格
- 版本
- v1.1.3 — 正式版
- 计量项
- CPU 核·时 · 内存 GiB·时 · GPU 及任意扩展资源按卡·时(NVIDIA、MIG、AMD、昇腾)· PVC 按 StorageClass 的 GiB·时
- 数据来源
- 租户命名空间中的 Pod 与 PVC · 来自 slurmdbd 的 Slurm 作业(taip-slurm)
- 定价
- 按币种和生效日期管理的不可修改价目表 · 可按 GPU 型号、资源池、优先级、StorageClass 或节点标签定价
- 金额
- 整数微单位、精确有理数计价 · CNY · USD · TKN 积分 · 仅允许追加的复式账本
- 账户
- 带初始赠送额度的个人账户 · 含所有者 / 计费管理员 / 成员角色的组织账户 · 命名空间与 Slurm 绑定
- 用量限制
- Pod 准入 Webhook(失败放行)· Kueue AdmissionCheck · Slurm GrpSubmitJobs — 支持演练模式,不中断运行中的任务
- 数据库
- CloudNativePG 上的独立 PostgreSQL · 同步复制 · 最近 30 天内的时间点恢复 · 每周恢复演练
- 交付方式
- 单个 Go 二进制文件 · 两副本、Leader 选举 · 一次 Helm 发布
- 语言
- English · 简体中文
使用示例
通过示例了解用法。
无需专用 SDK,也无需重写客户端。 TAIP Billing 可直接与现有工具对接。
# Pod train-resnet-0 · 2 × A100 · 16 核 · 64 GiB · team-vision
09:31 已创建 # 排队等待——不收费
09:40 PodScheduled # 开始计费
12:10 finishedAt # 停止计费 · 共 4 个整点切片
计量项 09:40 10:00 11:00 12:00 合计
nvidia.com/gpu 8.000 24.000 24.000 4.000 60.000000
cpu 0.267 0.800 0.800 0.133 2.000000
memory 0.213 0.640 0.640 0.107 1.600000
账本 借 wallet_credit 40.000000 + wallet_cash 23.600000 → 贷 revenue_usage 63.600000
# 分录合计 = 0.000000 TKN——借贷不平的交易无法提交▌ 按调度器预留的资源量准确计价,记入仅允许追加的账本。先扣赠送额度,再扣现金;所列价格仅为示例。
核心能力
TAIP Billing 的主要功能
按预留资源计费
费用按调度器预留的资源请求量计算,不随实际利用率变化。计费始于 PodScheduled、止于最后一个容器的 finishedAt——两者都由控制平面记录,精确到秒;有效请求量的算法与 kube-scheduler 完全一致,含 Sidecar、Init 容器、Pod Overhead 与原地扩缩容。排队、受准入条件限制或无法调度的任务不收费;节点失联时,其上的 Pod 从节点变为 NotReady 的那一刻停止计费。
支持多种加速卡与 Slurm 作业
各类扩展资源按资源名称分别计量——nvidia.com/gpu、MIG 规格、amd.com/gpu、huawei.com/Ascend910B——新厂商无需改代码。Slurm 作业从 slurmdbd 读取,与同一节点上的 Kubernetes Pod 同价计费;长期运行的 slurmd 预留记为平台容量,绝不重复计费。
价格变更不影响历史账单
每份价目表对应一个币种和生效日期,规则可匹配 GPU 型号、资源池、优先级、StorageClass 或节点标签,优先采用匹配范围更具体的规则,也可调整优先顺序。新价目表不能追溯影响已计价用量;没有匹配规则的计量项会标记为“未定价”,便于及时处理。
只允许追加的复式账本
每次余额变动均以整数微单位记录为复式交易。数据库触发器拒绝 UPDATE、DELETE 和 TRUNCATE,延迟约束拒绝借贷不平的交易。错误通过冲正或调整更正,不修改原记录。每笔用量仅计价、记账一次,结算后的月份生成不可修改的账单。涉及账务变更的接口仅接受浏览器会话认证,API 令牌不能用于记账、冲正或重新计价。
限制新任务,保留运行中的任务
余额不足或阻断型预算用尽时,通过 Pod 准入 Webhook、Kueue AdmissionCheck 和 Slurm 提交限制管控新任务。Pod Webhook 使用内存快照校验,故障时放行;Kueue 使整组任务继续排队;Slurm 限制由 account-sync 同步。运行中的任务不受影响。可先启用演练模式,确认价格与用量后再强制执行。
支持个人与组织账户
首次登录时创建带初始赠送额度的个人账户;组织账户支持所有者、计费管理员和成员角色。命名空间、Slurm 账户和分区从指定时刻起绑定组织,不追溯历史用量。组织用量可根据 TAIP 各应用已设置的标签分摊到个人,也可按项目或成本中心标签拆分。
及时掌握支出与预算
查看本月至今支出、与上月同期的对比、30 天趋势、各类资源费用,以及运行中任务的小时费率。按近 7 日均值和当前消耗速率估算剩余可用时长。可为账户、命名空间或用户设置预算阈值和月末预测,提交任务前预估费用,并通过中英文邮件或 Alertmanager 格式的 Webhook 发送通知。
用量分析与经营报表
集群用量报表支持筛选无归属或未定价的记录,并导出 Excel。容量视图按资源池、GPU 型号或节点对比可分配、已预留和闲置资源,结合成本表计算容量成本、收入、毛利及闲置资源价值。系统比较预留量与实际使用量,每日与 Prometheus 核对计费用量,发现偏差时告警,并记录各项变更。
保障计费数据可靠性
Pod 删除后,用量记录仍保存在独立的 CloudNativePG PostgreSQL 集群中。数据库采用三实例同步复制、持续 WAL 归档、最近 30 天内的时间点恢复和每月逻辑导出,并每周开展恢复演练、校验账本。计费服务中断时,计费时段截至最后一次心跳,避免因停机向租户多收费用。
工作原理
从资源计量到入账,各阶段由单一实例写入。
- 步骤 01
计量
通过 Informer 监听 Pod、PVC、节点和资源池,每五分钟核对一次状态并轮询 Slurm,按对象和计量项记录资源预留时段。
- 步骤 02
计价
主副本每五分钟处理未计价时段,在整点、价格变更和付费方变更时划分区间,分别计算费用,并同时保存费用与处理进度,避免故障重启后重复计价。
- 步骤 03
记账
每小时,已计价的用量记入复式账本,先扣赠送额度再扣现金。已结束的月份封存为不可修改的账单,支持 CSV 导出。
- 步骤 04
执行余额限制
各副本将余额加载到内存快照,通过 Webhook、Kueue 检查和 Slurm 提交限制管控新任务,并通过事件、页面横幅及邮件提醒用户。
适用团队
适合哪些团队
- 向用户与部门分摊共享 GPU 集群成本的平台团队
- 使用内部积分或货币结算算力费用的运营方
- 需要跟踪预算和预计可用时长的财务与团队负责人
- 在同一份价目表下并行运行 Kubernetes 与 Slurm 的组织