iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Cloud Native

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

Day 10|Helm 部署 Selkies --- GL 樣板 App 驗證 GPU/串流

  • 分享至 

  • xImage
  •  

承接 Day 9(coturn + TURN-REST),今天用 Helm 部署 Selkies,並跑一個內建的 GL 樣板 App,驗證 GPU 能否正確分配,以及 WebRTC 串流是否能順利推到瀏覽器。

A. 為什麼要先用樣板 App?

  • 降低複雜度:不馬上用 Isaac Sim/Lab,先用小型 GPU 範例(如 glxgears)驗證串流。
  • 可控性:排除 Isaac 本身容器化的相依問題,專注檢查 Selkies 與 GPU Operator 配合。
  • 快速迭代:樣板 App 啟動快、佔資源少,方便測試 TURN/Ingress 配置。

B. Selkies Helm Chart 安裝

1) 加入 Helm repo

helm repo add selkies https://selkies-project.github.io/selkies/
helm repo update

2) 建立命名空間

kubectl create ns selkies || true

3) 安裝 Selkies Chart(最小設定)

helm upgrade --install selkies selkies/selkies \
  -n selkies \
  --set ingress.enabled=true \
  --set ingress.className=nginx \
  --set ingress.host=gl.example.com \
  --set turn.restUrl=https://turn.example.com/turn-cred \
  --set turn.secretName=turn-secret
  • ingress.host:請換成你的 DNS(或測試用 hosts 檔)。
  • turn.restUrl:指向前一篇 Day 9 部署的 TURN-REST API。
  • turn.secretName:coturn 的密鑰 Secret 名稱。

C. GPU 驗證:GL 樣板 App

Selkies Chart 提供簡單的 GPU 範例(通常基於 OpenGL 渲染,顯示 rotating gears):

# values-gl-sample.yaml
app:
  name: gl-sample
  image: nvidia/opengl:1.0-glvnd-runtime-ubuntu20.04
  command: ["glxgears"]
  gpu: 1

安裝方式:

helm upgrade --install gl-sample selkies/selkies-app \
  -n selkies \
  -f values-gl-sample.yaml

這會產生一個 Pod:

  • Container A:glxgears(吃 GPU)
  • Container B:Selkies Sidecar(GStreamer + WebRTC)

D. 測試流程

  1. 確認 Pod Ready:

    kubectl get pods -n selkies -o wide
    
  2. 瀏覽 https://gl.example.com(TLS 已由 Day 6 cert-manager 發憑證)。

  3. 預期結果:

    • 瀏覽器中看到 glxgears 動畫。
    • chrome://webrtc-internals 可觀察 Candidate Pair、位元率、FPS。
  4. 驗證 GPU 使用:

    kubectl exec -n selkies <gl-sample-pod> -c gl-sample -- nvidia-smi
    

    預期:看到 GPU 使用率隨著 glxgears 上升。


E. 常見問題

  • 瀏覽器黑畫面:檢查 Sidecar 日誌 kubectl logs -n selkies <pod> -c sidecar
  • 無法存取 gl.example.com:確認 Ingress/TLS 憑證,DNS 或 hosts 設定。
  • GPU 未被分配:確認 Pod YAML 中 resources.limits.nvidia.com/gpu: 1,以及 GPU Operator 狀態。
  • TURN 未生效:在 webrtc-internals 檢查 ICE Candidate;若全是 host/srflx,代表直連;若有 relay,表示走 TURN。

F. 感想

長く続かなさそう


上一篇
# Day 9|部署 coturn + TURN-REST & WebRTC-Internals 連線驗證
系列文
K8s上的機器人沙盒10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言