跳到主要内容

实例状态

每个实例在任意时刻都恰好处于八种状态中的一种。实例页面上的状态标签、实例详情页上的状态标签,以及 API 返回的 status 字段,报告的都是同一个值。

各个状态​

状态是否过渡状态含义计费内容可执行的操作
creating是你的部署已被接受,Superheat 正在置备切片并拉取镜像不计费等待,或者销毁
starting是一个已停止的实例正在同一台机器上、用同一块磁盘重新启动不计费等待,或者销毁
running否工作负载已就绪,连接信息已发布GPU:按报价的整片小时价,按秒计量通过 SSH 连接、打开 JupyterLab、查看日志、停止、销毁
stopping是工作负载正在关闭;磁盘予以保留不计费等待,或者销毁
stopped否工作负载已关闭;磁盘留在机器上。GPU 仍为你保留——除非余额用完时平台在机器支持的情况下把它们释放了磁盘:你的磁盘容量乘以每 GB 每小时的存储费率启动、销毁
destroying是销毁流程进行中,切片正在被释放不计费等待。再次销毁会重新发送拆除请求
destroyed否终态。磁盘已删除,报价已回到市场不计费无。已销毁的实例不会出现在列表中,除非你主动请求查看
error否工作负载无法启动、失败或丢失,自己运行结束了,或者停止期间它的容器不见了。error_code 说明是哪一种不计费查看日志、销毁
出错的实例可能仍然占着切片

error 不产生费用。一旦平台看到工作负载已经结束——失败、丢失或运行完毕——那些 GPU 就会被释放,回到这份报价的 available_units 里。工作负载还没到达主机就失败的部署,会一直占着它们,直到实例被销毁。每个出错的实例在被销毁之前都算进 25 个实例的上限。

过渡状态​

有四种状态——creating、starting、stopping 和 destroying——属于过渡状态:Superheat 正在完成这次变更,没有任何计量在跑,你做什么都无法让它更快 —— 不过处于 creating、starting 或 stopping 的实例可以直接销毁,而不必干等。控制台会为这些状态绘制一个闪烁的状态标签,并在你有任一实例处于其中时每 3 秒轮询一次,等一切稳定下来后再退回到每 15 秒一次。

实例处于 creating 期间,控制台会显示提示 正在为你准备机器…。拉取大镜像可能让它在这里停上几分钟,而拉取所花的时间一分钱都不收。

哪些转换是合法的​

从你可以请求平台还可能把它转到
creatingdestroyingrunning、error
startingdestroyingrunning、stopped(恢复被拒绝或一直未确认,包括原来的 GPU 已被别人占用或已停止服务)、error
runningstopping、destroyingstopped、error
stoppingdestroyingstopped、running(停止一直未确认)、error
stoppedstarting、destroyingrunning、error(停止期间容器不见了)
destroying—(再次请求会重新发送拆除)destroyed、error
destroyed无——该状态是终态无
errordestroyingrunning、stopped(发现工作负载其实是健康的)

正常路径是 creating → running → stopping → stopped → starting → running。销毁流程始终是 destroying → destroyed。

destroying 可以从每一个仍然存活的状态到达,这是刻意的。一次永远落不了地的部署 —— 因为机群里没有匹配的机器而一直在等待放置,或者主机已经不认得这个作业了 —— 或者一次主机始终不回应的停止或启动,否则就会变成一个你删不掉的实例。你可以销毁一个还在创建、启动或停止中的实例。对已经处于 destroying 的实例再发一次 DELETE 也不会被拒绝:它会再请求一次拆除。

平台自己的转换是为了让状态保持真实。主机在 30 分钟内没有确认的停止,会把实例放回 running——容器其实还在运行,所以 GPU 计量重新开始——并继续重试停止。主机拒绝、连不上或在 30 分钟内没有确认的启动,会把实例放回 stopped。实例上的 error_code 会说明发生了什么,实例页面也会解释它。

GPU 被释放过的实例启动时,如果原来那几块 GPU 正被别人使用,或者在那台机器上已停止服务,启动会被拒绝:请求本身以 409 CAPACITY_UNAVAILABLE 失败,或者实例先进入 starting、再回到 stopped,error_code 为 gpus_unavailable。实例停止期间容器在机器上不见了的,会转到 error,error_code 为 workload_gone:没有东西可以启动了,只能销毁。

任何要求执行“你可以请求”一栏之外转换的请求都会被拒绝,返回 409 INVALID_STATE,实例保持原样。API 在实例的 allowed_actions 里列出当前允许的操作。

相关内容​