kubernetes/kops · error
etcd nodes requires the ExperimentalNodes feature flag to be
Error message
etcd nodes requires the ExperimentalNodes feature flag to be enabled
What it means
The InstanceGroup uses the etcd role while the ExperimentalRoles feature flag is disabled. Etcd-only node roles are experimental; spec population is refused until the flag is enabled.
Source
Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:126
ig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)
if err != nil {
return nil, fmt.Errorf("error assigning default machine type for bastions: %v", err)
}
}
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 etcd role from the instance group
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:126 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/fd9891586a263685.
Report an issue: GitHub.