kubernetes/kops · error
NatGateway %q has no addresses
Error message
NatGateway %q has no addresses
What it means
While resolving an ElasticIP through its AssociatedNatGatewayRouteTable, the located NAT Gateway reports zero NatGatewayAddresses, so no allocation ID can be extracted; the gateway is likely still provisioning or misconfigured.
Source
Thrown at upup/pkg/fi/cloudup/awstasks/elastic_ip.go:84
}
// find will attempt to look up the elastic IP from AWS
func (e *ElasticIP) find(ctx context.Context, cloud awsup.AWSCloud) (*ElasticIP, error) {
publicIP := e.PublicIP
allocationID := e.ID
// Find via RouteTable -> NatGateway -> ElasticIP
if allocationID == nil && publicIP == nil && e.AssociatedNatGatewayRouteTable != nil {
ngw, err := findNatGatewayFromRouteTable(ctx, cloud, e.AssociatedNatGatewayRouteTable)
if err != nil {
return nil, fmt.Errorf("error finding AssociatedNatGatewayRouteTable: %v", err)
}
if ngw == nil {
klog.V(2).Infof("AssociatedNatGatewayRouteTable not found")
} else {
if len(ngw.NatGatewayAddresses) == 0 {
return nil, fmt.Errorf("NatGateway %q has no addresses", *ngw.NatGatewayId)
}
if len(ngw.NatGatewayAddresses) > 1 {
return nil, fmt.Errorf("NatGateway %q has multiple addresses", *ngw.NatGatewayId)
}
allocationID = ngw.NatGatewayAddresses[0].AllocationId
if allocationID == nil {
return nil, fmt.Errorf("NatGateway %q has nil addresses", *ngw.NatGatewayId)
} else {
klog.V(2).Infof("Found ElasticIP AllocationID %q via NatGateway", *allocationID)
}
}
}
// Find via tag on subnet
// TODO: Deprecated, because doesn't round-trip with terraform
if allocationID == nil && publicIP == nil && e.TagOnSubnet != nil && e.TagOnSubnet.ID != nil {
var filters []ec2types.Filter
filters = append(filters, awsup.NewEC2Filter("key", "AssociatedElasticIp"))View on GitHub (pinned to 4c8573c808)
Solutions
- Wait until the NAT Gateway reaches the available state and re-run `kops update`
- Recreate the NAT Gateway if it is stuck in a failed/pending state
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/awstasks/elastic_ip.go:84 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/ce88fb3c369e96f9.
Report an issue: GitHub.