kubernetes/kops · error
error detaching instance %q: %v
Error message
error detaching instance %q: %v
What it means
The subsequent DetachInstances call failed while removing the instance from its autoscaling group during rolling update; commonly the ASG name is stale (already deleted) or AWS rejects the detach because the instance is already detached.
Source
Thrown at upup/pkg/fi/cloudup/awsup/aws_cloud.go:696
if id == "" {
return fmt.Errorf("id was not set on CloudInstance: %v", i)
}
asg := i.CloudInstanceGroup.Raw.(*autoscalingtypes.AutoScalingGroup)
if err := c.CreateTags(id, map[string]string{tagNameDetachedInstance: *asg.AutoScalingGroupName}); err != nil {
return fmt.Errorf("error tagging instance %q: %v", id, err)
}
// TODO this also deregisters the instance from any ELB attached to the ASG. Do we care?
input := &autoscaling.DetachInstancesInput{
AutoScalingGroupName: aws.String(i.CloudInstanceGroup.HumanName),
InstanceIds: []string{id},
ShouldDecrementDesiredCapacity: aws.Bool(false),
}
if _, err := c.Autoscaling().DetachInstances(ctx, input); err != nil {
return fmt.Errorf("error detaching instance %q: %v", id, err)
}
klog.V(8).Infof("detached aws ec2 instance %q", id)
return nil
}
// GetCloudGroups returns a groups of instances that back a kops instance groups
func (c *awsCloudImplementation) GetCloudGroups(cluster *kops.Cluster, instancegroups []*kops.InstanceGroup, warnUnmatched bool, nodes []v1.Node) (map[string]*cloudinstances.CloudInstanceGroup, error) {
ctx := context.TODO()
if c.spotinst != nil {
sgroups, err := spotinst.GetCloudGroups(c.spotinst, cluster, instancegroups, warnUnmatched, nodes)
if err != nil {
return nil, err
}
if featureflag.SpotinstHybrid.Enabled() {View on GitHub (pinned to 4c8573c808)
Solutions
- Verify the ASG still exists and contains the instance
- Re-run the rolling update; concurrent detachment can cause this transiently
- Check autoscaling:DetachInstances permissions
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/awsup/aws_cloud.go:696 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/d1359f36318e68f9.
Report an issue: GitHub.