承接 Day 13(Ingress 與 TURN 拓樸),今天開始把 Isaac Sim 放進容器中,分為 Headless 模式與 Streaming 模式。我們會討論官方映像、如何掛載資料卷(Assets、Cache、Dataset)、以及必須的環境變數設定,讓模擬能夠跑在 K8s 上。
官方映像來源:NVIDIA NGC Registry(需登入帳號並同意 EULA)
nvcr.io/nvidia/isaac-sim:2023.1.1
運行模式:
Headless:無視窗渲染,適合訓練與批次任務。
Streaming:啟動 WebRTC / Native Client,提供遠端可視化。
apiVersion: v1
kind: Pod
metadata:
name: isaac-headless
namespace: robotics
spec:
restartPolicy: Never
containers:
- name: isaac-sim
image: nvcr.io/nvidia/isaac-sim:2023.1.1
command: ["bash","-lc","./runheadless.sh"]
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: assets
mountPath: /isaac-sim/assets
- name: datasets
mountPath: /isaac-sim/datasets
volumes:
- name: assets
persistentVolumeClaim:
claimName: pvc-isaac-assets
- name: datasets
persistentVolumeClaim:
claimName: pvc-isaac-datasets
這樣即可跑起 Isaac headless 模擬,並能從 PVC 掛載資產與資料集。
Streaming 模式需額外啟動 Isaac 的 WebRTC 服務:
apiVersion: v1
kind: Pod
metadata:
name: isaac-streaming
namespace: robotics
spec:
containers:
- name: isaac-sim
image: nvcr.io/nvidia/isaac-sim:2023.1.1
command: ["bash","-lc","./runapp.sh --/renderer/headless=false --/webrtc/enabled=true"]
resources:
limits:
nvidia.com/gpu: 1
env:
- name: DISPLAY
value: ":0"
- name: ISAACSIM_HEADLESS
value: "false"
- name: ISAACSIM_STREAMING
value: "true"
volumeMounts:
- name: assets
mountPath: /isaac-sim/assets
- name: cache
mountPath: /isaac-sim/cache
volumes:
- name: assets
persistentVolumeClaim:
claimName: pvc-isaac-assets
- name: cache
persistentVolumeClaim:
claimName: pvc-isaac-cache
WebRTC 功能:之後會交給 Selkies Sidecar 處理,但 Isaac 內建 Streaming 也可測試。
Cache 掛載:可避免每次重跑都重新下載資產(提升啟動速度)。
ACCEPT_EULA=Y:必須同意 NVIDIA EULA。
PRIVACY_CONSENT=Y:啟動 Isaac Sim 時需要。
ISAAC_PATH=/isaac-sim:指定安裝路徑。
OMNI_USER / OMNI_PASS:若要存取 Nucleus 伺服器,可用此方式認證。
DISPLAY=:0:若使用 X11 或虛擬顯示。
範例:
env:
- name: ACCEPT_EULA
value: "Y"
- name: PRIVACY_CONSENT
value: "Y"
Assets(唯讀,RWX):模型、USD、材質。
Datasets(RWX):紀錄、訓練資料。
Cache(RWX,可清除):加快啟動。
Logs(RWO):寫入容器執行紀錄。
Assets 與 Datasets 採用 NFS/CephFS PVC,支援 RWX。
Cache 可放快速儲存(NVMe 本地盤或快取型 PVC)。
啟動報錯:缺少 EULA → 確認 ACCEPT_EULA=Y、PRIVACY_CONSENT=Y。
黑畫面 → 檢查 WebRTC 是否啟用,Ingress/TURN 是否正確導流。
資產路徑錯誤 → PVC 掛載目錄需對應 Isaac 預期結構。
Cache 未命中 → 確認 cache PVC 已正確掛載,並有寫入權限。
休みたいな