kubernetes/kops · error

found multiple instance groups matching servergrp %q

Error message

found multiple instance groups matching servergrp %q

What it means

While mapping a cloud server group name to kops InstanceGroups, more than one InstanceGroup produced the same expected group name (clusterName + instancegroup name) for the given servergrp. The mapping is expected to be unique; duplicates make it impossible to decide which InstanceGroup the instances belong to, usually caused by two InstanceGroups with the same ObjectMeta.Name or conflicting roles.

Source

Thrown at upup/pkg/fi/cloudup/do/cloud.go:503

// matchInstanceGroup filters a list of instancegroups for recognized cloud groups
func matchInstanceGroup(name string, clusterName string, instancegroups []*kops.InstanceGroup) (*kops.InstanceGroup, error) {
	var instancegroup *kops.InstanceGroup
	for _, g := range instancegroups {
		var groupName string

		switch {
		case g.Spec.Role.HasControlPlane(),
			g.Spec.Role.HasNode():
			groupName = clusterName + "-" + g.ObjectMeta.Name
		default:
			klog.Warningf("Ignoring InstanceGroup of unknown role %q", g.Spec.Role)
			continue
		}

		if name == groupName {
			if instancegroup != nil {
				return nil, fmt.Errorf("found multiple instance groups matching servergrp %q", groupName)
			}
			instancegroup = g
		}
	}

	return instancegroup, nil
}

func buildCloudInstanceGroup(c *doCloudImplementation, ig *kops.InstanceGroup, g DOInstanceGroup, nodeMap map[string]*v1.Node) (*cloudinstances.CloudInstanceGroup, error) {
	cg := &cloudinstances.CloudInstanceGroup{
		HumanName:     g.InstanceGroupName,
		InstanceGroup: ig,
		Raw:           g,
		MinSize:       int(fi.ValueOf(ig.Spec.MinSize)),
		TargetSize:    int(fi.ValueOf(ig.Spec.MinSize)),
		MaxSize:       int(fi.ValueOf(ig.Spec.MaxSize)),
	}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. List the cluster's InstanceGroups and find the duplicate name
  2. Rename or delete the redundant InstanceGroup so group names are unique
  3. Re-run the cloud group discovery afterwards
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/cloudup/do/cloud.go:503 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/23ea99cd59edd83d. Report an issue: GitHub.