kubernetes/kubernetes · error
DRAOptionalNodeOperations feature gate is disabled on kubele
Error message
DRAOptionalNodeOperations feature gate is disabled on kubelet
What it means
Returned by computeDriverStates() (claiminfo.go:130-132) when an allocated ResourceClaim advertises SkipNodeOperations for a driver but the DRAOptionalNodeOperations feature gate is disabled on the kubelet. The kubelet refuses to prepare the claim because it cannot honor the skip directive without the gate.
Source
Thrown at pkg/kubelet/cm/dra/claiminfo.go:131
if driverOpCounts != nil {
allCount := driverOpCounts[resourceapi.SkipNodeOperationAll]
if allCount == total {
skippedOps = []resourceapi.SkipNodeOperation{resourceapi.SkipNodeOperationAll}
} else {
for op, count := range driverOpCounts {
if op == resourceapi.SkipNodeOperationAll {
continue
}
if count+allCount == total {
skippedOps = append(skippedOps, op)
}
}
slices.Sort(skippedOps)
}
}
if len(skippedOps) > 0 && !utilfeature.DefaultFeatureGate.Enabled(features.DRAOptionalNodeOperations) {
return nil, errors.New("DRAOptionalNodeOperations feature gate is disabled on kubelet")
}
driverStates[driver] = state.DriverState{
SkipNodeOperations: skippedOps,
}
}
return driverStates, nil
}
// newClaimInfoFromClaim creates a new claim info from a checkpointed claim info state object.
func newClaimInfoFromState(state *state.ClaimInfoState) *ClaimInfo {
info := &ClaimInfo{
ClaimInfoState: *state.DeepCopy(),
prepared: false,
}
return info
}View on GitHub (pinned to b882c60b40)
Solutions
- Enable the feature gate on kubelet: --feature-gates=DRAOptionalNodeOperations=true (confirm the gate's maturity for your version).
- Update the DRA driver / ResourceClass to not request SkipNodeOperations if the node cannot honor them.
- Upgrade kubelets to a version where the gate is enabled by default.
Defensive patterns
Strategy: validation
Validate before calling
hasSkip := false
for _, r := range claim.Status.Allocation.Devices.Results {
if len(r.SkipNodeOperations) > 0 {
hasSkip = true
break
}
}
if hasSkip && !utilfeature.DefaultFeatureGate.Enabled(features.DRAOptionalNodeOperations) {
return errors.New("claim uses SkipNodeOperations but DRAOptionalNodeOperations is disabled")
} Prevention
- Enable DRAOptionalNodeOperations on kubelet if any driver uses skip-node-operations.
- Keep kubelet version aligned with control-plane DRA capabilities.
- Document which drivers require the feature gate.
When it happens
Trigger: A ResourceClaim's allocation result lists SkipNodeOperations (e.g. SkipNodeOperationAll or individual ops) for a driver, and utilfeature.DefaultFeatureGate.Enabled(features.DRAOptionalNodeOperations) returns false on the running kubelet.
Common situations: DRA driver advertises skip-node-operation support but the cluster/kubelet predates the feature or runs with the gate explicitly off. Mixed-version cluster where control plane supports the field but the node kubelet does not.
Related errors
- not allocated
- static pods may not use ResourceClaims
- DRA driver name is empty
- empty list of supported gRPC services (aka supported version
- failed to init resource claim controller: %w
AI-assisted analysis of kubernetes/kubernetes@b882c60b40 (2026-08-07).
Data as JSON: /api/errors/85e09a3c3af39ebb.
Report an issue: GitHub.