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

  1. Read the wrapped cause and fix accordingly (credentials vs permissions vs throttling)
  2. Ensure IAM allows elasticloadbalancing:DescribeLoadBalancers
  3. Retry the apply; throttling is typically transient
  4. 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

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


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/c46c9b34ee5faf49. Report an issue: GitHub.