kubernetes/kops · error
GetApiIngressStatus: Failed to list floating IP's: %v
Error message
GetApiIngressStatus: Failed to list floating IP's: %v
What it means
Error returned from GetApiIngressStatus when listing L3 floating IPs bound to the load balancer's VIP port fails. kOps matches a floating IP whose PortID equals lb.VipPortID to report the API ingress IP.
Source
Thrown at upup/pkg/fi/cloudup/openstack/cloud.go:788
lbName := "api." + cluster.Name
if cluster.Spec.API.PublicName != "" {
lbName = cluster.Spec.API.PublicName
}
// Note that this must match OpenstackModel lb name
klog.V(2).Infof("Querying Openstack to find Loadbalancers for API (%q)", cluster.Name)
lbList, err := c.ListLBs(loadbalancers.ListOpts{
Name: lbName,
})
if err != nil {
return ingresses, fmt.Errorf("GetApiIngressStatus: Failed to list openstack loadbalancers: %v", err)
}
for _, lb := range lbList {
// Must Find Floating IP related to this lb
fips, err := c.ListL3FloatingIPs(l3floatingip.ListOpts{
PortID: lb.VipPortID,
})
if err != nil {
return ingresses, fmt.Errorf("GetApiIngressStatus: Failed to list floating IP's: %v", err)
}
for _, fip := range fips {
if fip.PortID == lb.VipPortID {
ingresses = append(ingresses, fi.ApiIngressStatus{
IP: fip.FloatingIP,
})
}
}
}
return ingresses, nil
}
func getIPIngressStatus(c OpenstackCloud, cluster *kops.Cluster) (ingresses []fi.ApiIngressStatus, err error) {
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
instances, err := c.ListInstances(servers.ListOpts{})
if err != nil {
return false, fmt.Errorf("GetApiIngressStatus: Failed to list control plane nodes: %v", err)View on GitHub (pinned to 4c8573c808)
Solutions
- Check floating IP association: `openstack floating ip list --port <vipPortID>`
- Verify Neutron API health and reachability
- If no FIP is associated, create one: `openstack floating ip create --port <vipPortID> <network>`
- Retry the operation once Neutron responds
Defensive patterns
Strategy: retry
Validate before calling
fips, err := c.ListL3FloatingIPs(l3floatingip.ListOpts{PortID: lb.VipPortID})
if err != nil { return err }
if len(fips) == 0 { /* associate a floating IP before expecting an ingress address */ } Try / catch
fips, err := c.ListL3FloatingIPs(l3floatingip.ListOpts{PortID: lb.VipPortID})
if err != nil {
// recreate neutron client on auth errors, then retry; log wrapped cause if persistent
} Prevention
- Associate a floating IP with the LB VIP port at cluster creation
- Keep Neutron l3 extension enabled
- Check `openstack floating ip list --port <vipPortID>` when ingress lookups fail
When it happens
Trigger: c.ListL3FloatingIPs(l3floatingip.ListOpts{PortID: lb.VipPortID}) errors: Neutron floating-IP API unreachable, auth failure, or the l3 extension unavailable.
Common situations: Neutron outage or quota-service issues; Octavia LB exists but no floating IP was ever associated (empty result is fine, but API errors abort); network policy blocking the neutron client from the l3-floatingip endpoint.
Related errors
- could not establish floating network id
- did not find floatingsubnet for external router
- Failed to list L3 floating ip: %v
- Could not find port floatingips port=%s
- failed to find floating ip: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/76b70cb2fcc934a3.
Report an issue: GitHub.