Part of #202.
Context
DRA (Dynamic Resource Allocation) is GA in K8s 1.34 (Sept 2025). Workloads can now request GPUs via ResourceClaimTemplate instead of legacy nvidia.com/gpu: 1. Periscope needs to watch the DRA core types (ResourceClaim / ResourceSlice / DeviceClass under resource.k8s.io/v1) and join them with the PodResources allocation snapshot to produce a unified "this pod is on this GPU" view that covers both legacy and DRA cases.
This is post #4 of the blog series: "We migrated nvidia.com/gpu to DRA. Here's everything that broke."
Acceptance
Files this likely touches
- New:
internal/gpu/dra/informer.go
- Update:
internal/gpu/store/index.go to merge DRA + legacy
Dependencies
Blocks on: gpu — backend: PodResources DaemonSet (the join target)
Notes for contributors
- DRA core types:
resource.k8s.io/v1 ResourceClaim / ResourceSlice / DeviceClass
ResourceClaim.status.allocation.devices[].deviceID is a string — map back via ResourceSlice.spec.devices[] to find the physical GPU UUID
- Cache the deviceID → UUID mapping (rebuild on
ResourceSlice changes)
- Test against
kubernetes-sigs/dra-driver-nvidia-gpu (the upstream DRA reference)
- DRA-driver issues to be aware of: #897, #652 (DCGM correlation)
Part of #202.
Context
DRA (Dynamic Resource Allocation) is GA in K8s 1.34 (Sept 2025). Workloads can now request GPUs via
ResourceClaimTemplateinstead of legacynvidia.com/gpu: 1. Periscope needs to watch the DRA core types (ResourceClaim/ResourceSlice/DeviceClassunderresource.k8s.io/v1) and join them with the PodResources allocation snapshot to produce a unified "this pod is on this GPU" view that covers both legacy and DRA cases.This is post #4 of the blog series: "We migrated
nvidia.com/gputo DRA. Here's everything that broke."Acceptance
resource.k8s.io/v1ResourceClaim + ResourceSlice + DeviceClassPod→ResourceClaim→ResourceSlice→ physical GPU UUIDResourceSlice.spec.devices[]are opaque strings)resource.k8s.io/v1API group): skip the informer, no errorsFiles this likely touches
internal/gpu/dra/informer.gointernal/gpu/store/index.goto merge DRA + legacyDependencies
Blocks on:
gpu — backend: PodResources DaemonSet(the join target)Notes for contributors
resource.k8s.io/v1ResourceClaim / ResourceSlice / DeviceClassResourceClaim.status.allocation.devices[].deviceIDis a string — map back viaResourceSlice.spec.devices[]to find the physical GPU UUIDResourceSlicechanges)kubernetes-sigs/dra-driver-nvidia-gpu(the upstream DRA reference)