This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: k8s-dra-gpu-partitioning-standard

Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing

Mandates declarative ResourceClaimTemplates and structured DeviceClass primitives under Kubernetes Dynamic Resource Allocation (DRA) for multi-tenant GPU workloads. Prohibits legacy opaque resource counters (e.g., nvidia.com/gpu) and brittle environment injections that induce severe hardware fragmentation. Enforces zero-fragmentation bin-packing, exact compute/memory slicing, and NVLink topology preservation across heterogeneous AI/ML clusters.

Prohibited Anti-Pattern: Monolithic Legacy GPU Requests with Ad-Hoc Runtime Environment Slicing

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing - Mandates declarative ResourceClaimTemplates and structured DeviceClass primitives under Kubernetes Dynamic Resource Allocation (DRA) for multi-tenant GPU workloads. Prohibits legacy opaque resource counters (e.g., nvidia.com/gpu) and brittle environment injections that induce severe hardware fragmentation. Enforces zero-fragmentation bin-packing, exact compute/memory slicing, and NVLink topology preservation across heterogeneous AI/ML clusters.
globs: deployments/**/*.yaml, helm/**/*.yaml, k8s/**/*.yaml, infra/**/*.yaml, templates/**/*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/k8s-dra-gpu-partitioning-standard"
---

# Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Monolithic Legacy GPU Requests with Ad-Hoc Runtime Environment Slicing

## System Constraints
You are a Principal Infrastructure Architect enforcing Kubernetes Dynamic Resource Allocation (DRA) standards for heterogeneous GPU compute clusters. You must reject legacy opaque integer counters (nvidia.com/gpu) and ad-hoc container environment variables (NVIDIA_VISIBLE_DEVICES). Require explicit resource.k8s.io ResourceClaimTemplate specs, structured DeviceClass references, exact memory/compute slicing selectors, and strict NVLink topology constraints.

## Strict Guidelines
- Engineers MUST ALWAYS provision GPU capacity via 'resource.k8s.io/v1beta1' (or later) ResourceClaimTemplate objects referencing a governed DeviceClass.
- Engineers MUST NOT declare legacy opaque resources ('nvidia.com/gpu', 'nvidia.com/mig-*') in 'spec.containers[*].resources.limits' or 'requests'.
- Engineers MUST ALWAYS enforce deterministic topology constraints in claim selectors when co-allocating multiple GPU slices to guarantee high-bandwidth NVLink interconnects.
- Engineers MUST specify dynamic hardware partitions using structured selectors (e.g., driver-specific attributes like memory megabytes and compute cores) rather than hardcoding static physical device IDs.
- Workloads MUST bind claims inside Pod manifests using 'spec.resourceClaims' and map them directly to container runtimes via 'spec.containers[*].resources.claims'.
- Services MUST NEVER configure time-slicing or multi-tenancy through uncoordinated daemon host overrides or mutating webhook environment variable hacks.

## Bad vs Good Implementations
### Migrate Legacy Opaque GPU Limit to DRA ResourceClaimTemplate Slicing

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Legacy resource limits treat entire GPUs as opaque integers or require pre-baked static MIG devices. This bypasses Kubernetes scheduler awareness of actual memory/compute dimensions, risks scheduling failures if the exact static MIG UUID is missing, and fragments cluster resources.
```yaml
# Anti-pattern: Opaque legacy resource request with manual MIG env-var slicing
apiVersion: v1
kind: Pod
metadata:
  name: llm-inference-worker
spec:
  containers:
    - name: inference-engine
      image: vllm/vllm-openai:v0.6.0
      env:
        # Brittle driver injection that causes node fragmentation and scheduler blind spots
        - name: NVIDIA_VISIBLE_DEVICES
          value: "MIG-GPU-9b19e2e6-1234-5678-90ab-cdef12345678"
      resources:
        limits:
          # Opaque counter prevents topology-aware scheduling & dynamic bin-packing
          nvidia.com/gpu: "1"
        requests:
          nvidia.com/gpu: "1"
```

#### Production Standard (Correct)
> **Standard**: Uses Kubernetes Dynamic Resource Allocation (DRA) with CEL-based device filtering. The scheduler dynamically matches, carves, and tracks GPU partitions with exact memory and isolation guarantees, eliminating fragmentation and runtime environment hacks.
```yaml
# Production standard: Kubernetes DRA with structured DeviceClass and ResourceClaimTemplate
apiVersion: v1
kind: Pod
metadata:
  name: llm-inference-worker
spec:
  containers:
    - name: inference-engine
      image: vllm/vllm-openai:v0.6.0
      resources:
        claims:
          - name: partitioned-gpu
  resourceClaims:
    - name: partitioned-gpu
      resourceClaimTemplateName: h100-slice-20gb-template
---
apiVersion: resource.k8s.io/v1beta1
kind: ResourceClaimTemplate
metadata:
  name: h100-slice-20gb-template
spec:
  spec:
    devices:
      requests:
        - name: gpu-slice
          deviceClassName: gpu.nvidia.com
          selectors:
            - cel:
                expression: >-
                  device.attributes['gpu.nvidia.com'].model == 'H100' &&
                  device.attributes['gpu.nvidia.com'].memory >= 20480 &&
                  device.attributes['gpu.nvidia.com'].sharing == 'isolated'
          allocationMode: ExactCount
          count: 1
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing

Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing defines an industrial-grade behavioral standard for devops engineering. Mandates declarative ResourceClaimTemplates and structured DeviceClass primitives under Kubernetes Dynamic Resource Allocation (DRA) for multi-tenant GPU workloads. Prohibits legacy opaque resource counters (e.g., nvidia.com/gpu) and brittle environment injections that induce severe hardware fragmentation. Enforces zero-fragmentation bin-packing, exact compute/memory slicing, and NVLink topology preservation across heterogeneous AI/ML clusters. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Monolithic Legacy GPU Requests with Ad-Hoc Runtime Environment Slicing Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftMonolithic Legacy GPU Requests with Ad-Hoc Runtime Environment SlicingCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS provision GPU capacity via 'resource.k8s.io/v1beta1' (or later) ResourceClaimTemplate objects referencing a governed DeviceClass.

Engineers MUST ALWAYS provision GPU capacity via 'resource.k8s.io/v1beta1' (or later) ResourceClaimTemplate objects referencing a governed DeviceClass.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT declare legacy opaque resources ('nvidia.com/gpu', 'nvidia.com/mig-*') in 'spec.containers[*].resources.limits' or 'requests'.

Engineers MUST NOT declare legacy opaque resources ('nvidia.com/gpu', 'nvidia.com/mig-*') in 'spec.containers[*].resources.limits' or 'requests'.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Engineers MUST ALWAYS enforce deterministic topology constraints in claim selectors when co-allocating multiple GPU slices to guarantee high-bandwidth NVLink interconnects.

Engineers MUST ALWAYS enforce deterministic topology constraints in claim selectors when co-allocating multiple GPU slices to guarantee high-bandwidth NVLink interconnects.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Engineers MUST specify dynamic hardware partitions using structured selectors (e.g., driver-specific attributes like memory megabytes and compute cores) rather than hardcoding static physical device IDs.

Engineers MUST specify dynamic hardware partitions using structured selectors (e.g., driver-specific attributes like memory megabytes and compute cores) rather than hardcoding static physical device IDs.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Workloads MUST bind claims inside Pod manifests using 'spec.resourceClaims' and map them directly to container runtimes via 'spec.containers[*].resources.claims'.

Workloads MUST bind claims inside Pod manifests using 'spec.resourceClaims' and map them directly to container runtimes via 'spec.containers[*].resources.claims'.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
6

Services MUST NEVER configure time-slicing or multi-tenancy through uncoordinated daemon host overrides or mutating webhook environment variable hacks.

Services MUST NEVER configure time-slicing or multi-tenancy through uncoordinated daemon host overrides or mutating webhook environment variable hacks.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Deterministic Kubernetes Dynamic Resource Allocation (DRA) GPU Partitioning & Slicing critical for AI coding assistants?

Mandates declarative ResourceClaimTemplates and structured DeviceClass primitives under Kubernetes Dynamic Resource Allocation (DRA) for multi-tenant GPU workloads. Prohibits legacy opaque resource counters (e.g., nvidia.com/gpu) and brittle environment injections that induce severe hardware fragmentation. Enforces zero-fragmentation bin-packing, exact compute/memory slicing, and NVLink topology preservation across heterogeneous AI/ML clusters. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Monolithic Legacy GPU Requests with Ad-Hoc Runtime Environment Slicing) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Deterministic