Redirected from NVIDIA/k8s-device-plugin#206 to a more suitable repository.
1. Issue or feature description
In docker and kubernetes, people have had to have manual host setup to provision the X server using host path directive /tmp/.X11-unix. This is quite tedious for sysadmins and at the same time a security threat as people can spoof the host.
To mitigate this, there have been attempts (https://github.com/ehfd/docker-nvidia-glx-desktop which is based on https://github.com/ryought/glx-docker-headless-gpu) to execute an X server and use GLX inside the container after getting provisioned the GPU using libnvidia-container.
An alternative was created by the developers at VirtualGL (used widely in HPC to enable GPU-based rendering in VNC virtual display environments) have been able to develop a feature that uses the EGL API to enable 3D GL rendering such as Blender, Matlab, and Unity, previously only possible with GLX and thus an X server. As you guys know well, nvidia-docker does not support GLX but has introduced the EGL API just below two years ago.
See EGL config section of VirtualGL/virtualgl#113 (comment)
EGL is also required to start a Wayland compositor inside a container with the EGLStreams specification in NVIDIA GPUs, which is the way forward after X11 development has stopped.
These use cases require access to the devices /dev/dri/cardX corresponding to each GPU provisioned using libnvidia-container. However, it does not seem like libnvidia-container provisions this automatically. I would like to ask you whether this is possible, and how this can be configured.
2. Steps to reproduce the issue
Provision one GPU inside container nvidia/cudagl:11.0-devel-ubuntu20.04 or nvidia/opengl:1.2-glvnd-devel-ubuntu20.04 in Docker CE 19.03 (or using one nvidia.com/gpu: 1 with k8s-device-plugin v0.7.0 with default configurations in Kubernetes v1.18.6).
Do: ls /dev
Result: Inside the container you see /dev/nvidiaX, /dev/nvidia-modeset, /dev/nvidia-uvm, /dev/nvidia-uvm-tools, HOWEVER directory /dev/dri does not exist.
Wayland compositors are unlikely to start inside a container without DRM devices. VirtualGL does not work through any devices other than /dev/dri/cardX as well.
3. Information to attach (optional if deemed irrelevant)
Other issues and repositories:
Example of VirtualGL EGL configuration that requires /dev/dri/cardX: https://github.com/ehfd/docker-nvidia-egl-desktop
Implementation of an unprivileged remote desktop bundling an X server with many hacks: https://github.com/ehfd/docker-nvidia-glx-desktop
Redirected from NVIDIA/k8s-device-plugin#206 to a more suitable repository.
1. Issue or feature description
In docker and kubernetes, people have had to have manual host setup to provision the X server using host path directive
/tmp/.X11-unix. This is quite tedious for sysadmins and at the same time a security threat as people can spoof the host.To mitigate this, there have been attempts (https://github.com/ehfd/docker-nvidia-glx-desktop which is based on https://github.com/ryought/glx-docker-headless-gpu) to execute an X server and use GLX inside the container after getting provisioned the GPU using libnvidia-container.
An alternative was created by the developers at VirtualGL (used widely in HPC to enable GPU-based rendering in VNC virtual display environments) have been able to develop a feature that uses the EGL API to enable 3D GL rendering such as Blender, Matlab, and Unity, previously only possible with GLX and thus an X server. As you guys know well, nvidia-docker does not support GLX but has introduced the EGL API just below two years ago.
See EGL config section of VirtualGL/virtualgl#113 (comment)
EGL is also required to start a Wayland compositor inside a container with the EGLStreams specification in NVIDIA GPUs, which is the way forward after X11 development has stopped.
These use cases require access to the devices
/dev/dri/cardXcorresponding to each GPU provisioned using libnvidia-container. However, it does not seem like libnvidia-container provisions this automatically. I would like to ask you whether this is possible, and how this can be configured.2. Steps to reproduce the issue
Provision one GPU inside container
nvidia/cudagl:11.0-devel-ubuntu20.04ornvidia/opengl:1.2-glvnd-devel-ubuntu20.04in Docker CE 19.03 (or using onenvidia.com/gpu: 1with k8s-device-plugin v0.7.0 with default configurations in Kubernetes v1.18.6).Do:
ls /devResult: Inside the container you see
/dev/nvidiaX,/dev/nvidia-modeset,/dev/nvidia-uvm,/dev/nvidia-uvm-tools, HOWEVER directory/dev/dridoes not exist.Wayland compositors are unlikely to start inside a container without DRM devices. VirtualGL does not work through any devices other than
/dev/dri/cardXas well.3. Information to attach (optional if deemed irrelevant)
Other issues and repositories:
Example of VirtualGL EGL configuration that requires
/dev/dri/cardX: https://github.com/ehfd/docker-nvidia-egl-desktopImplementation of an unprivileged remote desktop bundling an X server with many hacks: https://github.com/ehfd/docker-nvidia-glx-desktop