kubernetes/kops · error
apiserver nodes requires the APIServerNodes feature flag to
Error message
apiserver nodes requires the APIServerNodes feature flag to be enabled
What it means
The InstanceGroup uses the apiserver-only role, but the APIServerNodes feature flag is not enabled. Apiserver nodes are experimental; kops refuses to populate specs for them unless the flag is turned on via KOPS_FEATURE_FLAGS.
Source
Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:121
if ig.Spec.MaxSize == nil {
ig.Spec.MaxSize = new(int32(1))
}
} else if ig.Spec.Role.HasBastion() {
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 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 {View on GitHub (pinned to 4c8573c808)
Solutions
- Enable the flag: KOPS_FEATURE_FLAGS=APIServerNodes
- Or change the instance group role to a supported non-experimental role
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/populate_instancegroup_spec.go:121 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/fff96a9e9aca112c.
Report an issue: GitHub.