跳至主要內容

啟動、停止與銷毀

三個動作​

動作執行個體在什麼狀態時會提供它會做什麼通常要花可逆
停止running關掉容器,保留硬碟,保住 GPU 名額幾秒鐘是,用「啟動」
啟動stopped在同一台機器與同一顆硬碟上把同一個容器叫回來幾秒鐘是,用「停止」
銷毀destroyed 以外的任何狀態 —— 包括 creating、starting 與 stopping移除容器、刪除硬碟,把 GPU 還給市集幾秒鐘否

在你動用第三個之前,請先讀停止與銷毀的差別。那是決定你會不會保住資料、會不會繼續付錢的選擇,這裡不再重複。

按鈕在哪裡​

執行個體 中的每一列都帶著適用於該執行個體目前狀態的動作,執行個體詳細頁面的標頭也會出現同一組。不適用的按鈕不會顯示 — 執行中的執行個體沒有「啟動」,已停止的沒有「停止」。執行個體還在建立、啟動或停止時,「銷毀」仍然可以用,所以卡在這些狀態的執行個體永遠在你的掌控之中。主控台從 API 的 allowed_actions 取得這組動作。

停止和銷毀都會先要求確認。停止的對話框是「要停止這個執行個體嗎?」:它寫明 GPU 會繼續為你保留、停止期間只收儲存費用(附上這個執行個體每小時的儲存費用),以及餘額用完時執行個體會被自動停止、並在機器支援時釋放 GPU;按停止執行個體確認,按繼續執行取消。銷毀的對話框會明白寫出即將被刪除的東西。啟動不會問第二次。

按下之後會發生什麼​

三個都不是瞬間完成的。執行個體會進入過渡狀態,狀態徽章會閃動,主控台會持續輪詢,直到機器回報:

你按下進行中的狀態完成後的狀態
停止stoppingstopped
啟動startingrunning
銷毀destroyingdestroyed

執行個體處於過渡狀態時,除了「銷毀」之外不接受任何動作。硬要下別的動作會拿到 409 INVALID_STATE,訊息中會指出擋下它的狀態,例如 Cannot stop an instance while it is creating。等過渡完成再試一次。哪個狀態能走到哪裡的完整對照,在執行個體狀態。

主機始終沒有確認的轉換,不會讓執行個體卡住。30 分鐘後,還沒完成的停止會把執行個體放回 running —— 容器其實還在執行,所以會重新按 GPU 計費 —— 並繼續重試停止;還沒完成的啟動會把執行個體放回 stopped。這時執行個體頁面會顯示上一個操作沒有完成及其原因;透過 API 查看時,執行個體的 error_code 會是 stop_timed_out 或 start_timed_out。

再次啟動​

啟動需要餘額足夠組織屆時要跑的一切跑一小時:這個執行個體的 GPU 與硬碟,加上其他所有執行中、啟動中或正在建立的執行個體的 GPU 與硬碟,以及所有已停止執行個體的硬碟。餘額只是大於零並不夠。不足時,啟動會被 402 INSUFFICIENT_BALANCE 拒絕(回應中的 required_micro 就是需要的金額),執行個體不會有任何變化 — 請先儲值。執行個體停著的期間累積的儲存費用,會在你啟動的那一刻結算,餘額檢查用的也是結算之後的餘額,所以你之後看到的餘額已經把整段停止期間算進去了。

主機也要能接手這次啟動。接不住時,執行個體仍然是 stopped,硬碟保留,啟動會被拒絕,主控台以提示框顯示對應的訊息:

回應主控台的提示怎麼辦
409 HOST_UNREACHABLE此執行個體所在的機器目前未連線。執行個體仍處於已停止狀態——請稍後再嘗試啟動。稍後再啟動
409 START_REFUSED機器無法恢復此執行個體,執行個體仍處於已停止狀態。如果持續發生,請銷毀後重新部署。API 的訊息會說明是主機拒絕了恢復,還是主機已不再持有這個工作負載;後者請銷毀執行個體並重新部署,否則稍後再試
503 START_UNAVAILABLE目前無法恢復此執行個體。執行個體仍處於已停止狀態——請稍後再試。稍後重試。如果恢復其實已經完成,執行個體會自己進入 running
409 CAPACITY_UNAVAILABLE此執行個體使用的 GPU 目前正被他人使用,無法啟動。執行個體仍處於已停止狀態,磁碟完好——請稍後再試。只會發生在 GPU 被釋放過的執行個體上。稍後再啟動:啟動成功之前拿不到硬碟上的資料。一直不成功的話,唯一的出路是銷毀它(硬碟會一起刪除)後重新部署

餘額用完時 GPU 被釋放了的執行個體——被自動停止的,或者你之前自己停止的,在機器支援的地方——啟動時要拿回同一台機器上原來那幾張 GPU。平台接受了啟動、機器隨後才發現它們被佔用或已停止服務時,請求不會回傳錯誤:執行個體先進入 starting,再回到 stopped,執行個體頁面在上一個操作沒有完成下顯示「此執行個體在其機器上使用的 GPU 目前正被他人使用。執行個體仍處於已停止狀態,磁碟完好——請稍後再啟動,或將其銷毀。」請參閱 GPU 被釋放之後。

啟動會讓你回到同一台機器、同一顆硬碟上。不過連線資訊會重新簽發,所以請重新複製 SSH 指令,不要沿用舊的。請見透過 SSH 連線。

處於 error 的執行個體​

沒能成功起來、工作負載失敗或遺失、任務自己執行完畢,或者停止期間容器不見了(workload_gone)的執行個體,會落入 error。它無法被啟動,也無法被停止。唯一可用的動作是「銷毀」。讀執行個體頁面上的發生了什麼問題(它解釋了執行個體的 error_code)和日誌,找出哪裡出錯,然後銷毀它並重新部署。如果平台之後發現工作負載其實在執行或被保留著,它會自己把執行個體放回 running 或 stopped。

透過 API​

以下範例使用 $SUPERHEAT_API 與 $SUPERHEAT_KEY,請依 API 總覽 的說明設定。

curl -X POST -H "Authorization: Bearer $SUPERHEAT_KEY" \
$SUPERHEAT_API/v1/instances/$INSTANCE_ID/stop

curl -X POST -H "Authorization: Bearer $SUPERHEAT_KEY" \
$SUPERHEAT_API/v1/instances/$INSTANCE_ID/start

curl -X DELETE -H "Authorization: Bearer $SUPERHEAT_KEY" \
$SUPERHEAT_API/v1/instances/$INSTANCE_ID

每一個都會回傳處於新過渡狀態的執行個體。輪詢 GET /v1/instances/{id} 就能看它落定。請見執行個體。

平台替你執行的動作​

當組織的錢用完時,這三個動作中有兩個會自己執行:

餘額會發生什麼
到達 ¥0執行中的執行個體會被停止,硬碟保留。在機器支援的地方,這些執行個體和已停止執行個體佔著的 GPU 會被釋放
在 ¥0 或以下持續 24 小時,且到達 −¥35 或更低已停止與出錯的執行個體會被銷毀;硬碟被刪除

請見自動停止與自動銷毀。

相關內容​