Deploying CloudXR Teleoperation on Kubernetes
This section explains how to deploy CloudXR Teleoperation for Isaac Lab on a Kubernetes (K8s) cluster.
System Requirements
- Minimum requirement: Kubernetes cluster with a node that has at least 1 NVIDIA RTX PRO 6000 / L40 GPU or equivalent
- Recommended requirement: Kubernetes cluster with a node that has at least 2 RTX PRO 6000 / L40 GPUs or equivalent
If you are using DGX Spark, check DGX Spark Limitations for compatibility.
Software Dependencies
-
kubectlon your host computer- If you use MicroK8s, you already have
microk8s kubectl - Otherwise follow the official kubectl installation guide
- If you use MicroK8s, you already have
-
helmon your host computer- If you use MicroK8s, you already have
microk8s helm - Otherwise follow the official Helm installation guide
- If you use MicroK8s, you already have
-
Access to NGC public registry from your Kubernetes cluster, in particular these container images:
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/isaac-labhttps://catalog.ngc.nvidia.com/orgs/nvidia/containers/cloudxr-runtime
-
NVIDIA GPU Operator or equivalent installed in your Kubernetes cluster to expose NVIDIA GPUs
-
NVIDIA Container Toolkit installed on the nodes of your Kubernetes cluster
Preparation
On your host computer, you should have already configured kubectl to access your Kubernetes cluster. To validate, run the following command and verify it returns your nodes correctly:
If you are installing this to your own Kubernetes cluster instead of using the setup described in the Appendix: Setting Up a Local K8s Cluster with MicroK8s, your role in the K8s cluster should have at least the following RBAC permissions:
Installation
The following steps are verified on a MicroK8s cluster with GPU Operator installed (see configurations in the Appendix: Setting Up a Local K8s Cluster with MicroK8s). You can configure your own K8s cluster accordingly if you encounter issues.
- Download the Helm chart from NGC (get your NGC API key based on the public guide):
- Install and run the CloudXR Teleoperation for Isaac Lab pod in the default namespace, consuming all host GPUs:
You can remove the need for host network by creating an external LoadBalancer VIP (e.g., with MetalLB), and setting the environment variable NV_CXR_ENDPOINT_IP when deploying the Helm chart:
- Verify the deployment is completed:
After the pod is running, it might take approximately 5-8 minutes to complete loading assets and start streaming.
Uninstallation
You can uninstall by simply running:
Appendix: Setting Up a Local K8s Cluster with MicroK8s
Your local workstation should have the NVIDIA Container Toolkit and its dependencies installed. Otherwise, the following setup will not work.
Cleaning Up Existing Installations (Optional)
Installing MicroK8s
Installing NVIDIA GPU Operator
If you have configured the GPU operator to use volume mounts for DEVICE_LIST_STRATEGY on the device plugin and disabled ACCEPT_NVIDIA_VISIBLE_DEVICES_ENVVAR_WHEN_UNPRIVILEGED on the toolkit, this configuration is currently unsupported, as there is no method to ensure the assigned GPU resource is consistently shared between containers of the same pod.
Verifying Installation
Run the following command to verify that all pods are running correctly:
You should see output similar to:
Once all pods are running, you can proceed to the Installation section.