kubernetes/kops · error
error suspending processes: %v
Error message
error suspending processes: %v
What it means
SuspendProcesses failed while suspending the configured scaling processes right after ASG creation; the ASG exists but its suspend-processes settings were not applied. The wrapped error is the raw AWS autoscaling API error.
Source
Thrown at upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go:449
return fmt.Errorf("error creating AutoScalingGroup: %s", message)
}
// @step: attempt to enable the metrics for us
if _, err := t.Cloud.Autoscaling().EnableMetricsCollection(ctx, &autoscaling.EnableMetricsCollectionInput{
AutoScalingGroupName: e.Name,
Granularity: e.Granularity,
Metrics: e.Metrics,
}); err != nil {
return fmt.Errorf("error enabling metrics collection for AutoscalingGroup: %v", err)
}
if len(*e.SuspendProcesses) > 0 {
processQuery := &autoscaling.SuspendProcessesInput{}
processQuery.AutoScalingGroupName = e.Name
processQuery.ScalingProcesses = *e.SuspendProcesses
if _, err := t.Cloud.Autoscaling().SuspendProcesses(ctx, processQuery); err != nil {
return fmt.Errorf("error suspending processes: %v", err)
}
}
} else {
// @logic: else we have found a autoscaling group and we need to evaluate the difference
request := &autoscaling.UpdateAutoScalingGroupInput{
AutoScalingGroupName: e.Name,
}
setup := func(req *autoscaling.UpdateAutoScalingGroupInput) *autoscalingtypes.MixedInstancesPolicy {
if req.MixedInstancesPolicy == nil {
req.MixedInstancesPolicy = &autoscalingtypes.MixedInstancesPolicy{
InstancesDistribution: &autoscalingtypes.InstancesDistribution{},
}
}
return req.MixedInstancesPolicy
}View on GitHub (pinned to 4c8573c808)
Solutions
- Verify process names against valid ASG process names (Launch, Terminate, HealthCheck, ReplaceUnhealthy, AZRebalance, AlarmNotification, ScheduledActions, AddToLoadBalancer, InstanceRefresh)
- Re-run `kops update cluster` to retry
- Check IAM policy allows autoscaling:SuspendProcesses
Example fix
// before suspendProcesses: [Healthcheck] // after suspendProcesses: [HealthCheck]
Defensive patterns
Strategy: validation
Validate before calling
var validProcesses = []string{"Launch","Terminate","HealthCheck","ReplaceUnhealthy","AZRebalance","AlarmNotification","ScheduledActions","AddToLoadBalancer","InstanceRefresh"}
for _, p := range ig.Spec.SuspendProcesses {
if !slices.Contains(validProcesses, p) { return fmt.Errorf("invalid ASG process %q", p) }
} Prevention
- Copy process names exactly (case-sensitive) from AWS docs
- Avoid suspending HealthCheck/ReplaceUnhealthy unless intentional — nodes won't be replaced
- Grant autoscaling:SuspendProcesses in automation IAM policies
When it happens
Trigger: After ASG creation, SuspendProcesses is called with e.SuspendProcesses entries and AWS rejects it — invalid process name, or the ASG was just created and the process set is not applicable.
Common situations: Typo'd process names in spec (e.g. 'AzRebalance' misspelled), or transient AWS errors right after group creation.
Related errors
- error resuming processes: %v
- DIGITALOCEAN_ACCESS_TOKEN is required
- the image for the hook exec action not set
- IP version is incorrect
- ErrAlreadyExists
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/7ddcc8b1bf3f3a2e.
Report an issue: GitHub.