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

  1. Enable the flag: KOPS_FEATURE_FLAGS=ExperimentalRoles
  2. 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.