跳转至

工作區

工作區(又稱 IDE)是互動式雲端開發環境——JupyterLab、VSCode 或自訂映像檔環境——運行於 Kubernetes Pod 中,支援 GPU 資源。

適用對象: 所有擁有足夠專案配額的專案成員。


工作區狀態

stateDiagram-v2
    [*] --> 已停止
    已停止 --> 啟動中 : 點擊啟動
    啟動中 --> 運行中 : Pod 就緒
    啟動中 --> 錯誤 : Pod 失敗
    運行中 --> 停止中 : 點擊停止
    停止中 --> 已停止 : Pod 已終止
    運行中 --> [*] : 點擊刪除
    錯誤 --> 已停止 : 重設 / 重試
    已停止 --> [*] : 點擊刪除

工作區列表頁面

工作區列表頁面 圖 1:工作區列表,顯示運行中和已停止的工作區及狀態標籤。

列表頁面顯示您所有工作區的:

  • 狀態標籤 — 運行中(綠色)、啟動中(黃色)、已停止(灰色)、錯誤(紅色)
  • GPU 數量 — 透過 DRA 配置的有效 GPU 數
  • 專案 — 工作區所屬的專案
  • 開啟 按鈕 — 僅在狀態為運行中時顯示
  • 啟動 / 停止 / 刪除 操作按鈕

啟動工作區

sequenceDiagram
    participant 使用者
    participant 儀表板
    participant API
    participant K8s

    使用者->>儀表板: 填寫啟動表單(映像檔、GPU、儲存)
    儀表板->>API: POST /api/v1/ide
    API->>K8s: 建立 Pod + Service
    K8s-->>API: Pod 已排程(啟動中)
    Note over K8s: Pod 拉取映像檔、啟動執行環境
    K8s-->>API: Pod 運行中
    API-->>儀表板: 工作區 URL
    儀表板-->>使用者: 出現「開啟」按鈕

逐步操作

  1. 點擊左側選單的 工作區
  2. 點擊 + 新增工作區(右上角)。

新增工作區表單 圖 2:新增工作區表單,包含專案、映像檔、GPU 和儲存欄位。

  1. 填寫表單:
欄位 說明
專案 選擇此工作區所屬專案(決定配額)。若有 personal project,表單會預設選取它。
名稱 此工作區的唯一名稱
映像檔 容器映像檔——從專案允許清單中選擇。personal project 只要專案允許 Root 容器即可啟用 Root shell;群組專案則需要專案與所屬群組都允許。
排程佇列 用於優先序與搶佔政策的平台佇列。已綁定佇列來自專案計畫;預設佇列永遠可用。
GPU 數量 透過 DRA 請求的實體 GPU 數;SM 百分比會決定有效配額消耗。
GPU 型號 計畫允許的其中一種 GPU 型號(如 RTX 5090、RTX 6000 Pro)。不在允許清單中的型號不會顯示。
SM 百分比 DRA GPU 配置的計算比例——100% 等於完整 GPU,較小值會以 fractional GPU 計入配額。
CPU / 記憶體 選填覆蓋;預設為計畫上限
儲存 選擇一個或多個 PVC 掛載到工作區
掛載路徑 各 PVC 在容器中的掛載位置(如:/data
  1. 點擊 啟動
  2. 工作區以 啟動中 狀態出現。等待 30-120 秒讓 Pod 拉取映像檔並啟動。
  3. 當狀態變為 運行中 時,點擊 開啟 在新分頁中開啟 IDE。

閒置回收

閒置超過一定時間的工作區可能會被平台的閒置回收機制自動停止,以釋放 GPU 資源。在此之前,工作區列表頁面會顯示閒置警告橫幅。

Root shell

Root shell 開關會讓 IDE process 在容器內以 UID 0 執行。這不代表 privileged pod、host namespace、任意 hostPath、Kubernetes RBAC 或額外 Linux capabilities。若開關無法使用,請管理員在該專案啟用 Root 容器;若是群組專案,也需要所屬群組允許 Root 容器。


排程佇列與優先序

每個工作區會選擇一個 平台排程佇列。佇列帶有 優先序、可選的 可被搶佔 旗標,以及由管理員設定的 deserved GPU 上限。DRA GPU 工作區由 Kubernetes default-scheduler 排程;佇列仍由平台用於政策、標籤與搶佔判斷。

概念 對工作區的影響
較高優先序 GPU 緊張時,會比低優先序佇列中的 Pod 先被排程。
可被搶佔的佇列 您的 Pod 可能被驅逐以讓出資源給更高優先序的工作。平台會先送出終止訊號再刪除 Pod。
預設佇列 永遠可用,不保證優先序。當專案沒有綁定計畫,或計畫窗口關閉時使用。

啟動表單會列出專案計畫綁定的佇列,加上預設佇列。若沒有綁定計畫,僅預設佇列可選。


計畫窗口

若專案計畫定義了每週或一次性的 排程窗口,使用計畫綁定佇列的工作區只能在窗口開啟期間運行。

  • 列表頁面會即時倒數——計畫窗口將於 HH:MM:SS 後關閉——窗口生效時顯示。
  • 窗口關閉後,計畫綁定佇列中的 Pod 可能被平台的 plan-window reaper 驅逐。預設佇列不受影響。
  • 窗口已關閉時,會出現一鍵 切換為預設佇列 的橫幅,方便您以較低優先序繼續工作。

連線到工作區

工作區進入 運行中 狀態後,點擊 開啟。平台會將您的瀏覽器連線代理到 Pod——無需設定 port-forwarding。

  • JupyterLab:開啟於 /lab——標準 Jupyter 介面
  • VSCode(code-server):開啟於 /——完整的瀏覽器版 VS Code
  • 自訂映像檔:開啟於設定的代理路徑

持久化工作

儲存在已掛載 PVC 路徑(如 /data)中的程式碼和筆記本,在工作區停止後仍會保留。寫入 PVC 路徑以外的檔案會在 Pod 刪除時遺失。


停止 vs. 刪除

操作 結果
停止 Pod 終止;PVC 資料保留;工作區可重新啟動
刪除 Pod 永久刪除;PVC 資料保留(PVC 不會被刪除);工作區無法重新啟動

批次刪除(管理員 / IDE 管理者)

擁有 IDE_MANAGE 權限的使用者可以勾選多個工作區,使用勾選後出現的 批次刪除 工具列進行批次操作。


透過 DRA 配置 GPU

GPU 配置使用 Kubernetes Dynamic Resource Allocation(DRA)。當您選擇 GPU 型號與 SM 百分比時,平台會為工作區建立 ResourceClaim。

  • GPU 數量 是請求的實體 GPU 數。
  • SM 百分比 會影響配額計算與 GPU 共享比例。
  • 在工作區中使用 nvidia-smi 檢查可見裝置與實際執行情況。
  • GPU 工作區真正綁到 GPU 時,Pod 必須同時有平台 DRA labels 與 Kubernetes resourceClaims。如果只有 labels 而沒有 resourceClaims,代表平台政策看得到 GPU 需求,但 Pod 尚未實際掛上 GPU。
  • 若需要獨佔或指定型號,請選擇 100% SM 與計畫允許的型號,或請管理員調整計畫。

常見問題

狀態顯示運行中但「開啟」按鈕未出現。

代理服務可能需要額外幾秒鐘啟動。等待 10 秒後重新整理頁面。若問題持續,Pod 可能處於異常重啟迴圈——請聯繫管理員。

我的工作區自動停止了。

閒置回收會停止在設定的閒置時間內沒有核心/行程活動的工作區。從列表頁面重新啟動工作區即可。

我看到錯誤狀態,該怎麼辦?

點擊工作區名稱查看錯誤詳情。常見原因:映像檔拉取失敗(映像檔不在允許清單中)、配額不足、DRA DeviceClass 不可用,或節點排程失敗。如需協助,請提交 申請

可以同時運行多個工作區嗎?

可以,只要它們的 GPU 消耗總量不超過專案配額。

工作區被以「Plan window expired」原因驅逐了。

plan-window reaper 會在排程窗口關閉時停止計畫綁定佇列中的 Pod。請於下個窗口開啟後重新啟動,或透過列表頁的橫幅將工作區切換到預設佇列。

為什麼啟動表單裡有些 GPU 型號被灰掉?

專案綁定的計畫指定了允許的 GPU 型號清單,清單外的型號不會顯示。請專案管理者改綁包含您所需型號的計畫。