kubernetes/kops · error

Didn't find k8s-instancegroup for tag %v

Error message

Didn't find k8s-instancegroup for tag %v

What it means

Sentinel-style validation in getDropletInstanceGroup: none of the droplet's tags contain the k8s-instancegroup marker, so its instance group membership cannot be determined. The droplet is effectively unclassified for cluster grouping purposes.

Source

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

	klog.V(8).Infof("InstanceGroup Info = %v", result)

	return result, nil
}

func getDropletInstanceGroup(tags []string) (string, error) {
	for _, tag := range tags {
		klog.V(8).Infof("Check tag = %s", tag)
		if strings.Contains(strings.ToLower(tag), TagKubernetesInstanceGroup) {
			tagParts := strings.Split(tag, ":")
			if len(tagParts) < 2 {
				return "", fmt.Errorf("tag split failed, too few components for tag %q", tag)
			}
			return tagParts[1], nil
		}
	}

	return "", fmt.Errorf("Didn't find k8s-instancegroup for tag %v", tags)
}

// 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 {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Apply the k8s-instancegroup:<name> tag to the droplet
  2. Recreate the droplet through kops so tags are set correctly
  3. Verify droplet tags with `doctl compute droplet get`
Defensive patterns

Strategy: validation

When it happens

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