kubernetes/kops · error
Could not find port floatingips port=%s
Error message
Could not find port floatingips port=%s
What it means
FindAddresses in floatingip.go:103 fails when, after listing L3 floating IPs filtered by the load balancer's port ID, either no FIP matched or the single returned FIP's PortID did not equal the LB port — so the expected floating address for the LB port cannot be resolved. It is thrown whenever e.ID is nil and the lookup must go through e.LB.PortID.
Source
Thrown at upup/pkg/fi/cloudup/openstacktasks/floatingip.go:103
if e.ID == nil {
if e.LB != nil && e.LB.ID == nil {
return nil, nil
}
}
cloud := context.T.Cloud.(openstack.OpenstackCloud)
// try to find ip address using LB port
if e.ID == nil && e.LB != nil && e.LB.PortID != nil {
fips, err := findL3Floating(cloud, l3floatingip.ListOpts{
PortID: fi.ValueOf(e.LB.PortID),
})
if err != nil {
return nil, err
}
if len(fips) == 1 && fips[0].PortID == fi.ValueOf(e.LB.PortID) {
return []string{fips[0].FloatingIP}, nil
}
return nil, fmt.Errorf("Could not find port floatingips port=%s", fi.ValueOf(e.LB.PortID))
}
fip, err := cloud.GetL3FloatingIP(fi.ValueOf(e.ID))
if err != nil {
return nil, err
}
return []string{fip.FloatingIP}, nil
}
// GetDependencies returns the dependencies of the Instance task
func (e *FloatingIP) GetDependencies(tasks map[string]fi.CloudupTask) []fi.CloudupTask {
var deps []fi.CloudupTask
for _, task := range tasks {
if _, ok := task.(*LB); ok {
deps = append(deps, task)
}
// We can't create a floating IP until the router with access to the external network
// Has created an interface to our subnetView on GitHub (pinned to 4c8573c808)
Solutions
- Rerun the operation after the FIP creation task has run — this is often transient eventual consistency.
- Verify with `openstack floating ip list --port <lb-port-id>` that a FIP is actually associated to that port.
- If the FIP was disassociated manually, reassociate it to the LB port or delete the cluster state so kops recreates it.
- Ensure the external network / router configuration allows FIP association for the LB port's subnet.
Defensive patterns
Strategy: validation
Validate before calling
// verify a single FIP is bound to the LB port before resolving addresses
fips, err := cloud.ListL3FloatingIPs(l3floatingip.ListOpts{PortID: portID})
if err != nil {
return err
}
if len(fips) != 1 || fips[0].PortID != portID {
return fmt.Errorf("no FIP bound to port %s; run kops update cluster first", portID)
} Type guard
func hasBoundFIP(fips []l3floatingip.FloatingIP, portID string) bool {
return len(fips) == 1 && fips[0].PortID == portID
} Try / catch
addrs, err := e.FindAddresses(ctx)
if err != nil && strings.Contains(err.Error(), "Could not find port floatingips") {
// FIP not yet associated: treat as not-ready and retry later
return nil, nil
} Prevention
- Run `kops update cluster` fully before commands that read LB addresses
- Avoid manually disassociating FIPs from kops-managed LB ports
- Confirm router/external network setup before LB creation
- Treat empty FIP lookup as eventual-consistency, retry after a short delay
When it happens
Trigger: The LB task has a PortID but no floating IP has been associated with that port yet, the FIP exists but is associated with a different port, or findL3Floating timed out returning zero results.
Common situations: Running `kops update cluster` before the FIP creation task completed; an operator manually disassociated or reassigned the floating IP; Neutron eventual consistency delaying FIP-to-port binding so the readback finds none.
Related errors
- could not establish floating network id
- GetApiIngressStatus: Failed to list floating IP's: %v
- unabled to create listener: %v
- did not find floatingsubnet for external router
- did not find floatingsubnet for LB
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/84af2d890cad311e.
Report an issue: GitHub.