kubernetes/kops · error
error listing NLBs: %v
Error message
error listing NLBs: %v
What it means
After filtering NLBs by matching DNS name, findNetworkLoadBalancerByAlias wraps any error from describeNetworkLoadBalancers as "error listing NLBs: %v". It indicates the AWS ELBv2 DescribeLoadBalancers API call chain failed, not that no NLB matched.
Source
Thrown at upup/pkg/fi/cloudup/awstasks/network_load_balancer.go:128
dnsName := aws.ToString(alias.DNSName)
matchDnsName := strings.TrimSuffix(dnsName, ".")
if matchDnsName == "" {
return nil, fmt.Errorf("DNSName not set on AliasTarget")
}
matchHostedZoneId := aws.ToString(alias.HostedZoneId)
found, err := describeNetworkLoadBalancers(ctx, cloud, request, func(lb elbv2types.LoadBalancer) bool {
if matchHostedZoneId != aws.ToString(lb.CanonicalHostedZoneId) {
return false
}
lbDnsName := aws.ToString(lb.DNSName)
lbDnsName = strings.TrimSuffix(lbDnsName, ".")
return lbDnsName == matchDnsName || "dualstack."+lbDnsName == matchDnsName
})
if err != nil {
return nil, fmt.Errorf("error listing NLBs: %v", err)
}
if len(found) == 0 {
return nil, nil
}
if len(found) != 1 {
return nil, fmt.Errorf("Found multiple NLBs with DNSName %q", dnsName)
}
return &found[0], nil
}
func describeNetworkLoadBalancers(ctx context.Context, cloud awsup.AWSCloud, request *elbv2.DescribeLoadBalancersInput, filter func(elbv2types.LoadBalancer) bool) ([]elbv2types.LoadBalancer, error) {
var found []elbv2types.LoadBalancer
paginator := elbv2.NewDescribeLoadBalancersPaginator(cloud.ELBV2(), request)
for paginator.HasMorePages() {
page, err := paginator.NextPage(ctx)View on GitHub (pinned to 4c8573c808)
Solutions
- Read the wrapped cause and fix accordingly (credentials vs permissions vs throttling)
- Ensure IAM allows elasticloadbalancing:DescribeLoadBalancers
- Retry the apply; throttling is typically transient
- Verify AWS region/credentials configured for the cluster's account
Example fix
null
Defensive patterns
Strategy: retry
Try / catch
err := update()
if strings.Contains(err.Error(), "error listing NLBs") {
var retryable bool
var ae smithy.APIError
if errors.As(err, &ae) { retryable = ae.ErrorCode() == "ThrottlingException" }
if retryable { backoffAndRetry() } else { inspectCredentialsAndIAM() }
} Prevention
- Grant elasticloadbalancing:DescribeLoadBalancers in IAM
- Avoid applying during AWS throttling-prone periods
- Rotate credentials before expiry
When it happens
Trigger: The paginator inside describeNetworkLoadBalancers returns an error (throttling, credentials, network) during findDNSTargetNLB's alias lookup.
Common situations: AWS API rate limiting during large applies; expired/insufficient credentials for elasticloadbalancing:DescribeLoadBalancers; regional API outage.
Related errors
- error listing EgressOnlyInternetGateway: %v
- listing NLBs: %v
- looking for AWS NLB: %w
- error listing resource record sets: %w
- describing instance for arn %q
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/c46c9b34ee5faf49.
Report an issue: GitHub.