iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
Cloud Native

K8s上的機器人沙盒系列 第 14

Day14 | Isaac Sim 容器化:Image、DataSet、ENV

  • 分享至 

  • xImage
  •  

承接 Day 13(Ingress 與 TURN 拓樸),今天開始把 Isaac Sim 放進容器中,分為 Headless 模式與 Streaming 模式。我們會討論官方映像、如何掛載資料卷(Assets、Cache、Dataset)、以及必須的環境變數設定,讓模擬能夠跑在 K8s 上。

A. Isaac Sim 容器基礎

官方映像來源:NVIDIA NGC Registry(需登入帳號並同意 EULA)

nvcr.io/nvidia/isaac-sim:2023.1.1

運行模式:

  1. Headless:無視窗渲染,適合訓練與批次任務。

  2. Streaming:啟動 WebRTC / Native Client,提供遠端可視化。

B. Headless 模式(最小範例)

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 掛載資產與資料集。

C. Streaming 模式(帶 WebRTC)

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 掛載:可避免每次重跑都重新下載資產(提升啟動速度)。

D. 必要環境變數

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"

E. 資料讀寫模式

Assets(唯讀,RWX):模型、USD、材質。

Datasets(RWX):紀錄、訓練資料。

Cache(RWX,可清除):加快啟動。

Logs(RWO):寫入容器執行紀錄。

Assets 與 Datasets 採用 NFS/CephFS PVC,支援 RWX。

Cache 可放快速儲存(NVMe 本地盤或快取型 PVC)。

G. 常見問題

啟動報錯:缺少 EULA → 確認 ACCEPT_EULA=Y、PRIVACY_CONSENT=Y。

黑畫面 → 檢查 WebRTC 是否啟用,Ingress/TURN 是否正確導流。

資產路徑錯誤 → PVC 掛載目錄需對應 Isaac 預期結構。

Cache 未命中 → 確認 cache PVC 已正確掛載,並有寫入權限。

感想

休みたいな


上一篇
Day 13|Ingress 與 TURN 的拓樸擺位:公網/私網/多 NAT 的布署方式
下一篇
Day 15|Isaac Lab 容器化:RL/IL 任務、Python 相依、CUDA/cuDNN 驗證
系列文
K8s上的機器人沙盒16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言