kubernetes/kops · error
provider ID cannot be empty
Error message
provider ID cannot be empty
What it means
Wraps a failure of the autoscaling DescribeTags paginator in FindAutoscalingGroups. kOps pages through ASG tags filtering by the cluster's tags to discover groups; any page-level API error is wrapped with this message.
Source
Thrown at pkg/nodeidentity/do/identify.go:122
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("droplet metadata returned non-200 status code: %d", resp.StatusCode)
}
bodyBytes, err := io.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("failed to read metadata information %s: %v", url, err)
}
return string(bodyBytes), nil
}
// IdentifyNode queries DigitalOcean for the node identity information.
func (i *nodeIdentifier) IdentifyNode(ctx context.Context, node *corev1.Node) (*nodeidentity.Info, error) {
providerID := node.Spec.ProviderID
if providerID == "" {
return nil, errors.New("provider ID cannot be empty")
}
const prefix = "digitalocean://"
if !strings.HasPrefix(providerID, prefix) {
return nil, fmt.Errorf("provider ID %q is missing prefix %q", providerID, prefix)
}
instanceID := strings.TrimPrefix(providerID, prefix)
if instanceID == "" {
return nil, errors.New("provider ID number cannot be empty")
}
if i.cacheEnabled {
if obj, exists, err := i.cache.GetByKey(instanceID); err != nil {
klog.Warningf("Nodeidentity info cache lookup failure: %v", err)
} else if exists {
return obj.(*nodeidentity.Info), nil
}View on GitHub (pinned to 4c8573c808)
Solutions
- Add autoscaling:DescribeTags to the kOps IAM policy
- Retry with backoff; consider smaller tag filters to reduce pages
- Verify network access to the autoscaling endpoint in the cluster region
- Run the DescribeTags call via aws CLI to reproduce and see the raw error
Defensive patterns
Strategy: retry
Validate before calling
_, err := client.DescribeTags(ctx, &autoscaling.DescribeTagsInput{MaxRecords: aws.Int32(1)})
if err != nil { return fmt.Errorf("autoscaling DescribeTags unavailable: %w", err) } Try / catch
var throttle *types.ThrottlingException
err := cloud.GetCloudGroups(ctx, cluster, igs, true, nodes)
if errors.As(err, &throttle) || strings.Contains(err.Error(), "error listing autoscaling cluster tags") {
retryWithExponentialBackoff()
} Prevention
- Grant autoscaling:DescribeTags in the IAM policy
- Use precise Filters (cluster tag key/value) to minimize pages
- Apply backoff for clusters with many tagged resources
- Verify endpoint reachability (VPC endpoints/proxies)
When it happens
Trigger: DescribeTags NextPage fails: missing autoscaling:DescribeTags IAM permission, throttling (common with many tag pages), invalid filter combinations, or endpoint/network failure.
Common situations: IAM policy scoping that omits DescribeTags; thousands of tagged resources causing heavy throttling during discovery; corporate proxy blocking the autoscaling endpoint.
Related errors
- IP version is incorrect
- provider ID number cannot be empty
- error creating AutoScalingGroup: %s
- error deleting old AutoscalingGroup tags: %v
- error updating AutoscalingGroup tags: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/c559b3a706e3c7b1.
Report an issue: GitHub.