Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Best practices for Unity remote rendering

Dernière mise à jour :Aug 11, 2026

Déployez Unity Render Streaming sur des nœuds GPU ACK afin de diffuser un rendu 3D en temps réel vers les navigateurs, sans nécessiter de matériel GPU côté client.

Prérequis

Assurez-vous de disposer des éléments suivants :

  • Un cluster managé ACK doté d’un pool de nœuds GPU

  • kubectl configuré pour se connecter au cluster

  • Unity Editor installé localement

  • Docker installé localement pour construire les images de conteneur

Environnement utilisé dans ce guide :

Composant Version / spécification
Cluster managé ACK 1,22.3-aliyun.1
Système d’exploitation du pool de nœuds Alibaba Cloud Linux 2.1903
Type d’instance ecs.gn6v-c8g1.2xlarge
Docker Engine 19.3.15

Étape 1 : Construire l’application Unity Render Streaming

Cette étape utilise Unity Editor 2021.3.2f1c1 pour Mac M1 Silicon.

  1. Dans Unity Editor, ouvrez Package Manager depuis le menu en haut à gauche.

  2. Recherchez com.unity.renderstreaming@3.1.0-exp.2 et cliquez sur Add.

  3. Cliquez sur Yes pour redémarrer le projet. Après le redémarrage, le package Unity Render Streaming apparaît dans la page Package Manager.

    Unity Render Streaming package

  4. Dans la page Package Manager, faites défiler jusqu’à Samples et cliquez sur Import (1,19 Mo). Le dossier Assets est mis à jour après l’importation.

    Assets

  5. Ouvrez Build Settings depuis le menu en haut à gauche. Définissez les champs comme suit, puis cliquez sur Build et nommez la sortie mac-linux. Après la construction, le répertoire de sortie se présente ainsi :

    Champ Valeur
    Platform Windows, Mac, Linux
    Target Platform Linux
    Scenes WebBrowserInput

    Build

  6. Téléchargez l’exemple de serveur web officiel depuis le menu en haut à gauche. Le serveur web gère la signalisation WebSocket entre les navigateurs et le flux WebRTC de l’application Unity. Votre application de rendu à distance est désormais complète, avec un exécutable Unity et un binaire de serveur web. D’autres options d’implémentation sont abordées dans About Unity Render Streaming.

Étape 2 : Conteneuriser et déployer l’application

Conteneuriser l’application Unity et le serveur web

  1. Construisez l’image de l’application Unity. Suivez Bonnes pratiques pour les applications graphiques Linux pour les étapes de conteneurisation. Utilisez une image de base unityci/editor correspondant à votre version de Unity Editor — les tags disponibles figurent sur unityci/editor sur Docker Hub. Ce guide utilise ubuntu-2021.3.2f1-mac-mono-1.0.1 avec les packages supplémentaires suivants : vulkan-util, libc++1 et libc++abi1.

  2. Construisez l’image du serveur web. Utilisez le Dockerfile suivant :

    FROM ubuntu:20.04
    WORKDIR /run
    COPY webserver ./
    CMD webserver -w

Déployer sur ACK

  1. Créez un fichier nommé unity-demo.yaml avec le contenu suivant :

    apiVersion: v1
    kind: Pod
    metadata:
      name: unity-demo
      namespace: default
    spec:
      # The Linux web server sample binds WebSocket to 127.0.0.1 only.
      # Use host network mode so browsers can reach it through the node's EIP.
      hostNetwork: true
      nodeName: <your-gpu-node-name>
      containers:
      - image: <your-unity-image>:<tag>
        name: unity
        command: ["/run/mac-linux/mac-linux.x86_64"]
        securityContext:
          # privileged: true is required for the Unity process to access
          # the GPU device on the host.
          privileged: true
      - image: <your-webserver-image>:<tag>
        name: webserver
        ports:
        - containerPort: 80
          protocol: TCP
      restartPolicy: Always

    Les deux conteneurs partagent le namespace réseau du Pod. Unity se connecte au serveur web à l’adresse 127.0.0.1:80 via WebSocket ; le serveur web accepte les connexions des navigateurs sur le port 80.

    Explication des champs clés :

    • hostNetwork: true — L’exemple de serveur web se lie uniquement à 127.0.0.1. Le mode réseau hôte le rend accessible via l’adresse IP élastique (EIP) du nœud.

    • privileged: true — Requis pour que le conteneur Unity accède au GPU hôte.

    • nodeName — Épingle le Pod à un nœud GPU spécifique. Remplacez <your-gpu-node-name> par le nom de votre nœud.

  2. Appliquez le manifeste :

    kubectl apply -f unity-demo.yaml
  3. Vérifiez que le Pod est en cours d’exécution :

    kubectl get pod unity-demo

    Sortie attendue :

    NAME         READY   STATUS    RESTARTS   AGE
    unity-demo   2/2     Running   0          30s

    Si le Pod n’est pas en cours d’exécution, consultez les journaux des conteneurs :

    kubectl logs unity-demo -c unity
    kubectl logs unity-demo -c webserver

Étape 3 : Accéder au flux de rendu à distance

Chemin de connexion :

Browser -> EIP (port 80) -> web server (WebSocket signaling) -> Unity application (WebRTC stream)

Dans votre navigateur, accédez à EIP:80. Cliquez sur VideoPlayer Sample pour démarrer le flux.

Vidéo de démonstration

La qualité du flux dépend de la stabilité du réseau.