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
- Apply the k8s-instancegroup:<name> tag to the droplet
- Recreate the droplet through kops so tags are set correctly
- 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.