Dynamic Resource Allocation (DRA) adds powerful scheduling and device management
capabilities. Because DRA components update ResourceClaim status, cluster
administrators should configure authorization for those updates with explicit,
least-privilege RBAC.
Kubernetes v1.36 [beta](enabled by default)Starting in Kubernetes v1.36, DRA status updates use synthetic subresources and, in some cases, specialized node-aware verbs.
For DRA status updates,In addition to granting update permissions on the
resourceclaims/status subresource, cluster administrators must grant permissions on
specific "synthetic" subresources based on the exact fields a component needs to modify.
This enforces the principle of least privilege between the scheduler, custom controllers,
and DRA drivers.
The DRA authorization checks are divided into two synthetic subresources:
resourceclaims/bindingstatus.allocation and status.reservedFor.update and patch verbs.resourceclaims/driverstatus.devices.When authorizing updates to resourceclaims/driver, use the appropriate
specialized verb prefix:
associated-node:<verb> (for example, associated-node:update)arbitrary-node:<verb> (for example, arbitrary-node:patch)apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dra-binding-updater
rules:
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/status"]
verbs: ["get", "patch", "update"]
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/binding"]
verbs: ["patch", "update"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dra-node-driver-status-updater
rules:
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/status"]
verbs: ["get", "patch", "update"]
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/driver"]
verbs: ["associated-node:patch", "associated-node:update"]
resourceNames: ["dra.example.com"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dra-multinode-status-updater
rules:
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/status"]
verbs: ["get", "patch", "update"]
- apiGroups: ["resource.k8s.io"]
resources: ["resourceclaims/driver"]
verbs: ["arbitrary-node:patch", "arbitrary-node:update"]
resourceNames: ["dra.example.com"]
To apply these patterns in a running cluster, see Harden Dynamic Resource Allocation in Your Cluster.