Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Best practices for Unity remote rendering

Última actualización: Sep 05, 2026

Despliegue Unity Render Streaming en nodos GPU de ACK para transmitir renderizado 3D en tiempo real a navegadores sin necesidad de hardware GPU en el lado del cliente.

Requisitos previos

Asegúrese de contar con lo siguiente:

  • Un clúster administrado de ACK con un node pool de GPU

  • kubectl configurado para conectarse al clúster

  • Unity Editor instalado localmente

  • Docker instalado localmente para compilar imágenes de contenedor

Entorno utilizado en esta guía:

Componente

Versión / especificación

Clúster administrado de ACK

1.22.3-aliyun.1

Sistema operativo del node pool

Alibaba Cloud Linux 2.1903

Tipo de instancia

ecs.gn6v-c8g1.2xlarge

Docker Engine

19.3.15

Paso 1: Compilar la aplicación Unity Render Streaming

Este paso utiliza Unity Editor 2021.3.2f1c1 para Mac M1 Silicon.

  1. En Unity Editor, abra Package Manager desde el menú superior izquierdo.

  2. Busque com.unity.renderstreaming@3.1.0-exp.2 y haga clic en Add.

  3. Haga clic en Yes para reiniciar el proyecto. Después del reinicio, el paquete Unity Render Streaming aparece en la página de Package Manager.

    Unity Render Streaming package

  4. En la página de Package Manager, desplácese hasta Samples y haga clic en Import (1.19 MB). La carpeta Assets se actualiza tras la importación.

    Assets

  5. Abra Build Settings desde el menú superior izquierdo. Configure los campos como se indica a continuación, luego haga clic en Build y asigne al resultado el nombre mac-linux. Tras la compilación, el directorio de salida tiene el siguiente aspecto:

    Campo

    Valor

    Platform

    Windows, Mac, Linux

    Target Platform

    Linux

    Scenes

    WebBrowserInput

    Build

  6. Descargue el ejemplo oficial del servidor web desde el menú superior izquierdo. El servidor web gestiona la señalización WebSocket entre los navegadores y el flujo WebRTC de la aplicación Unity. Su aplicación de renderización remota queda completa con un ejecutable de Unity y un binario de servidor web. Otras opciones de implementación se describen en About Unity Render Streaming.

Paso 2: Contenerizar y desplegar la aplicación

Contenerizar la aplicación Unity y el servidor web

  1. Compile la imagen de la aplicación Unity. Siga Linux graphics application best practices para los pasos de containerization. Utilice una imagen base unityci/editor que coincida con su versión de Unity Editor; las etiquetas disponibles se encuentran en unityci/editor en Docker Hub. Esta guía utiliza ubuntu-2021.3.2f1-mac-mono-1.0.1 con paquetes adicionales: vulkan-util, libc++1 y libc++abi1.

  2. Compile la imagen del servidor web. Utilice el siguiente Dockerfile:

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

Desplegar en ACK

  1. Cree un archivo llamado unity-demo.yaml con el siguiente contenido:

    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

    Ambos contenedores comparten el namespace de red del Pod. Unity se conecta al servidor web en 127.0.0.1:80 mediante WebSocket; el servidor web acepta conexiones de navegadores en el puerto 80.

    Explicación de los campos clave:

    • hostNetwork: true — El ejemplo del servidor web se vincula únicamente a 127.0.0.1. El modo de red host permite acceder a él mediante la dirección IP elástica (EIP) del nodo.

    • privileged: true — Obligatorio para que el contenedor de Unity acceda a la GPU del host.

    • nodeName — Fija el Pod a un nodo GPU específico. Reemplace <your-gpu-node-name> con el nombre de su nodo.

  2. Aplique el manifiesto:

    kubectl apply -f unity-demo.yaml
  3. Compruebe que el Pod esté en ejecución:

    kubectl get pod unity-demo

    Salida esperada:

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

    Si el Pod no se está ejecutando, revise los registros del contenedor:

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

Paso 3: Acceder al flujo de renderización remota

Ruta de conexión:

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

En su navegador, vaya a EIP:80. Haga clic en VideoPlayer Sample para iniciar el streaming.

Video de demostración

La calidad del streaming depende de la estabilidad de la red.