kubernetes/kops · error

error describing addresses: %v

Error message

error describing addresses: %v

What it means

ListVolumes calls ec2:DescribeAddresses to discover Elastic IPs associated with volumes, and wraps any DescribeAddresses failure in this error. It means the EC2 API rejected the address query entirely, so no volume listing can be produced. The underlying AWS error is embedded via %v.

Source

Thrown at pkg/resources/aws/aws.go:634

		for _, tag := range volume.Tags {
			name := aws.ToString(tag.Key)
			ip := ""
			if name == "kubernetes.io/master-ip" {
				ip = aws.ToString(tag.Value)
			}
			if ip != "" {
				elasticIPs[ip] = true
			}
		}

	}

	if len(elasticIPs) != 0 {
		klog.V(2).Infof("Querying EC2 Elastic IPs")
		request := &ec2.DescribeAddressesInput{}
		response, err := c.EC2().DescribeAddresses(ctx, request)
		if err != nil {
			return nil, fmt.Errorf("error describing addresses: %v", err)
		}

		for _, address := range response.Addresses {
			ip := aws.ToString(address.PublicIp)
			if !elasticIPs[ip] {
				continue
			}

			resourceTrackers = append(resourceTrackers, buildElasticIPResource(address, false, clusterName))
		}
	}

	return resourceTrackers, nil
}

func DescribeVolumes(cloud fi.Cloud) ([]ec2types.Volume, error) {
	ctx := context.TODO()
	c := cloud.(awsup.AWSCloud)

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Verify AWS credentials and region (kops set-cluster, env vars, ~/.aws/credentials) are valid.
  2. Add ec2:DescribeAddresses to the caller's IAM policy.
  3. Retry with backoff if the error is RequestLimitExceeded/throttling.
  4. Check network/proxy connectivity to the EC2 endpoint for the configured region.
Defensive patterns

Strategy: try-catch

Validate before calling

creds, err := config.LoadDefaultConfig(ctx)
if err != nil { return fmt.Errorf("no valid AWS config: %w", err) }
_, err = creds.Credentials.Retrieve(ctx)
if err != nil { return fmt.Errorf("AWS credentials not resolvable: %w", err) }

Type guard

func isAuthError(err error) bool { var ae smithy.APIError; return errors.As(err, &ae) && (ae.ErrorCode() == "AuthFailure" || ae.ErrorCode() == "UnauthorizedOperation") }

Try / catch

if err != nil {
  if isThrottling(err) { backoffRetry(op) }
  if isAuthError(err) { return fmt.Errorf("check IAM ec2:DescribeAddresses: %w", err) }
  return err
}

Prevention

When it happens

Trigger: ec2.DescribeAddresses returns any error: throttling (RequestLimitExceeded), AuthFailure/UnauthorizedOperation from IAM, invalid credentials, or a regional endpoint/network failure.

Common situations: Expired or missing AWS credentials (env vars/profile/instance role) during cluster listing; rate limiting when enumerating many clusters; IAM policy lacking ec2:DescribeAddresses; wrong region configuration.

Related errors


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