kubernetes/kops · error
kube-controller-manager nodes requires the ExperimentalNodes
Error message
kube-controller-manager nodes requires the ExperimentalNodes feature flag to be enabled
What it means
The InstanceGroup uses the kube-controller-manager role while the ExperimentalRoles feature flag is disabled. Control-component node roles are experimental; spec population is refused until the flag is enabled.
Source
Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:130
}
if ig.Spec.MinSize == nil {
ig.Spec.MinSize = new(int32(1))
}
if ig.Spec.MaxSize == nil {
ig.Spec.MaxSize = new(int32(1))
}
} else {
if ig.IsAPIServerOnly() && !featureflag.APIServerNodes.Enabled() {
return nil, fmt.Errorf("apiserver nodes requires the APIServerNodes feature flag to be enabled")
}
if !featureflag.ExperimentalRoles.Enabled() {
switch {
case ig.Spec.Role.HasEtcd():
return nil, fmt.Errorf("etcd nodes requires the ExperimentalNodes feature flag to be enabled")
case ig.Spec.Role.HasScheduler():
return nil, fmt.Errorf("scheduler nodes requires the ExperimentalNodes feature flag to be enabled")
case ig.Spec.Role.HasKubeControllerManager():
return nil, fmt.Errorf("kube-controller-manager nodes requires the ExperimentalNodes feature flag to be enabled")
}
}
if ig.Spec.MachineType == "" {
ig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)
if err != nil {
return nil, fmt.Errorf("error assigning default machine type for nodes: %v", err)
}
}
if ig.Spec.Manager != kops.InstanceManagerKarpenter {
if ig.Spec.MinSize == nil {
ig.Spec.MinSize = new(int32(2))
}
if ig.Spec.MaxSize == nil {
ig.Spec.MaxSize = new(int32(2))
}
}
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Enable the flag: KOPS_FEATURE_FLAGS=ExperimentalRoles
- Or remove the kube-controller-manager role from the instance group
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:130 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/d1c1cd1296ffe3a9.
Report an issue: GitHub.