# nvidia/k8s-device-plugin

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nvidia-k8s-device-plugin).**

3,793 stars · 835 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/NVIDIA/k8s-device-plugin
- awesome-repositories: https://awesome-repositories.com/repository/nvidia-k8s-device-plugin.md

## Topics

`kubernetes`

## Description

This project is a Kubernetes device plugin designed for graphics hardware resource management. It implements a standardized plugin protocol to register physical accelerators with the cluster scheduler, enabling the automated allocation and scheduling of hardware-accelerated workloads.

The system focuses on multi-tenant GPU sharing to maximize hardware utilization. It achieves this through various sharing strategies, including the logical partitioning of monolithic hardware units into isolated segments and time-slicing to interleave execution cycles across multiple concurrent containers.

The plugin manages the end-to-end lifecycle of hardware integration, covering system-level discovery of accelerators via host paths and the mapping of device nodes and memory exchange channels into container namespaces. It also handles automated node labeling, applying metadata tags to cluster nodes based on detected hardware capabilities to facilitate intelligent workload placement.

## Tags

### DevOps & Infrastructure

- [Device Plugin Integration](https://awesome-repositories.com/f/devops-infrastructure/gpu-resource-orchestrators/kubernetes-orchestrators/device-plugin-integration.md) — Implements the Kubernetes device plugin interface to enable the cluster to recognize and partition hardware accelerators.
- [Node Metadata Labeling](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/node-metadata-labeling.md) — Automatically applies metadata tags to cluster nodes based on detected hardware capabilities to facilitate intelligent workload placement.
- [GPU Resource Orchestrators](https://awesome-repositories.com/f/devops-infrastructure/gpu-resource-orchestrators.md) — Identifies available accelerators on cluster nodes and reports them to the scheduler for request fulfillment. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))
- [GPU Workload Orchestration](https://awesome-repositories.com/f/devops-infrastructure/gpu-workload-orchestration.md) — Allocates specific hardware accelerators to containers based on resource requests defined in the workload specification. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))
- [Hardware Discovery](https://awesome-repositories.com/f/devops-infrastructure/infrastructure/private-enterprise-management/virtualization-bare-metal/bare-metal-orchestration/hardware-discovery.md) — Scans and identifies physical hardware to prepare accelerators for automated cluster-wide advertisement.
- [Hardware Acceleration](https://awesome-repositories.com/f/devops-infrastructure/hardware-acceleration.md) — Supports exposing host hardware resources to containerized workloads for compute-intensive task scheduling.

### Operating Systems & Systems Programming

- [Multi-Tenant Hardware Sharing](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-tenant-hardware-sharing.md) — Enables multiple concurrent containers to share a single physical graphics device using virtualization and partitioning strategies.
- [Hardware Capability Labeling](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-feature-orchestration/hardware-capability-labeling.md) — Generates and applies metadata labels to nodes to describe specific hardware capabilities and sharing strategies. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))
- [Hardware Availability Detection](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration/hardware-availability-detection.md) — Scans local host paths and system files to identify and verify the presence of physical accelerators.
- [Hardware Accelerator Time-Slicing](https://awesome-repositories.com/f/operating-systems-systems-programming/time-slicing/hardware-accelerator-time-slicing.md) — Interleaves execution cycles of hardware accelerators across multiple workloads to maximize GPU utilization.
- [Communication Channels](https://awesome-repositories.com/f/operating-systems-systems-programming/communication-channels.md) — Configures low-level logical paths for reliable data exchange between hardware accelerators. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))
- [Multi-Instance GPU Passthroughs](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtualization-platforms/virtualization-technologies/device-passthrough-drivers/gpu-device-passthroughs/multi-instance-gpu-passthroughs.md) — Exposes multi-instance GPU (MIG) compute instances into containers to provide isolated hardware environments. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))

### Artificial Intelligence & ML

- [Hardware Resource Exposure](https://awesome-repositories.com/f/artificial-intelligence-ml/agentic-systems-frameworks/agent-protocols-interoperability/resource-exposure-frameworks/hardware-resource-exposure.md) — Provides standardized interfaces for accessing host hardware accelerators within container environments. ([source](https://nvidia.github.io/k8s-device-plugin))

### Hardware & IoT

- [Hardware Segment Partitioning](https://awesome-repositories.com/f/hardware-iot/physical-hardware-control/hardware-segment-partitioning.md) — Logically divides monolithic hardware units into isolated segments to allow multiple independent containers to share a single device.

### Security & Cryptography

- [Hardware Resource Partitioning](https://awesome-repositories.com/f/security-cryptography/multi-tenant-isolation/logical-resource-partitioning/hardware-resource-partitioning.md) — Divides physical graphics hardware into isolated segments to allow multiple concurrent workloads to share a single device.
- [MPS Resource Partitioning](https://awesome-repositories.com/f/security-cryptography/multi-tenant-isolation-layers/control-plane-isolation/tenant/virtual-cluster-tenant-management/gpu-resource-sharing/mps-resource-partitioning.md) — Partitions memory and compute capacity using a control daemon to enforce explicit limits for multiple concurrent workloads. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))

### Software Engineering & Architecture

- [Hardware Accelerator Discovery](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-path-configuration/binary-path-discovery/hardware-accelerator-discovery.md) — Scans local host filesystems and system paths to enumerate available accelerators for registration with the cluster scheduler.
- [Hardware Device Exposure](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/hardware-device-exposure.md) — Selectively maps host device nodes into isolated container namespaces to provide direct compute access.
- [Host-to-Container Path Mappings](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/user-namespace-mappings/host-to-container-path-mappings.md) — Mounts physical hardware character devices from the host filesystem directly into container namespaces for low-latency access.
- [gRPC Plugin Implementations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/grpc-plugin-implementations.md) — Implements the gRPC remote procedure call interface to register hardware resources with the cluster orchestrator.
- [Container Resource Injections](https://awesome-repositories.com/f/software-engineering-architecture/container-resource-injections.md) — Maps memory exchange channels and device nodes into container environments based on hardware discovery.

### Data & Databases

- [Memory Exchange Mappings](https://awesome-repositories.com/f/data-databases/shared-memory-data-exchange/direct-memory-data-transfer/memory-exchange-mappings.md) — Maps device nodes directly into container namespaces to enable specific memory exchange channels for workloads. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))

### Scientific & Mathematical Computing

- [High-Performance Computing](https://awesome-repositories.com/f/scientific-mathematical-computing/high-performance-execution-environments/high-performance-and-parallel-computing/high-performance-computing.md) — Configures container environments to access specialized hardware and memory channels for demanding scientific tasks.

### System Administration & Monitoring

- [GPU Health Monitors](https://awesome-repositories.com/f/system-administration-monitoring/multi-device-management/gpu-orchestrators/gpu-health-monitors.md) — Monitors GPU health and availability on cluster nodes to facilitate accurate container resource requests. ([source](https://cdn.jsdelivr.net/gh/nvidia/k8s-device-plugin@main/README.md))
