kubernetes/kops · error
no IP found for server %q: %w
Error message
no IP found for server %q: %w
What it means
The IPAM ListIPs call succeeded but returned TotalCount == 0: Scaleway knows about the server, yet no IPv4 IP is associated with its resource. Note the err in this message is nil by construction, so the cause is missing state, not an API failure.
Source
Thrown at upup/pkg/fi/cloudup/scaleway/verifier.go:112
ServerID: serverID,
Zone: zone,
}, scw.WithContext(ctx))
if err != nil || serverResponse == nil || serverResponse.Server == nil {
return nil, fmt.Errorf("failed to get server %s: %w", serverID, err)
}
server := serverResponse.Server
ips, err := ipam.NewAPI(scwClient).ListIPs(&ipam.ListIPsRequest{
Region: region,
ResourceID: new(server.ID),
IsIPv6: new(false),
Zonal: new(zone.String()),
}, scw.WithContext(ctx), scw.WithAllPages())
if err != nil {
return nil, fmt.Errorf("failed to get IP for server %q: %w", server.Name, err)
}
if ips.TotalCount == 0 {
return nil, fmt.Errorf("no IP found for server %q: %w", server.Name, err)
}
addresses := []string(nil)
challengeEndPoints := []string(nil)
for _, ip := range ips.IPs {
addresses = append(addresses, ip.Address.IP.String())
challengeEndPoints = append(challengeEndPoints, net.JoinHostPort(ip.Address.IP.String(), strconv.Itoa(wellknownports.NodeupChallenge)))
}
result := &bootstrap.VerifyResult{
NodeName: server.Name,
InstanceGroupName: InstanceGroupNameFromTags(server.Tags),
CertificateNames: addresses,
ChallengeEndpoint: challengeEndPoints[0],
}
return result, nil
}View on GitHub (pinned to 4c8573c808)
Solutions
- Attach a public/flexible IPv4 to the server in the Scaleway console (or recreate the node)
- Wait and retry bootstrap — IPAM registration can lag shortly after instance creation
- If the node is intentionally IPv6-only, this kOps path will not work; provision IPv4
- Check the server is the right one: scw instance server get <id> shows its IP configuration
Defensive patterns
Strategy: validation
Validate before calling
// verify the server has an IPv4 before token verification
srv, _ := instance.NewAPI(scwClient).GetServer(&instance.GetServerRequest{ServerID: serverID, Zone: zone}, scw.WithContext(ctx))
if srv.Server.PublicIP == nil {
return fmt.Errorf("server %s has no public IPv4; attach one before bootstrap", serverID)
} Type guard
func serverHasIPv4(s *instance.Server) bool { return s != nil && s.PublicIP != nil } Try / catch
if ips.TotalCount == 0 {
// treat as retryable: IPAM registration can lag instance creation
return retryableError(fmt.Errorf("no IP found for server %q yet", server.Name))
} Prevention
- Provision nodes with a public IPv4 (flexible IP), not IPv6-only
- Wait for IPAM registration before starting nodeup on brand-new instances
- Audit IPs detached manually in the console during cluster lifetime
When it happens
Trigger: ListIPs matched zero IPs for the server's resource ID in the region — e.g. the server is still booting and its IP has not been registered in IPAM yet, the server has no public IP, or the IP is IPv6 while the query filters IsIPv6=false.
Common situations: A newly launched instance whose flexible IP is still being attached, an instance configured without a public IPv4 (IPv6-only or private-network only), or an IP that was manually detached/deleted from the server in the Scaleway console.
Related errors
- listing IPs for server %s: %w
- failed to get IP for server %q: %w
- listing IPs for deletion: %w
- could not find IP for server %s
- reading actual user-data: %w
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/8dd472817933f8bc.
Report an issue: GitHub.