kubernetes/kops · error
Failed to list pools: %v
Error message
Failed to list pools: %v
What it means
LBPool.Find lists Octavia pools via cloud.ListPools (GET /v2/lbaas/pools filtered by ID/Name). Any API-level failure of that listing — auth, connectivity, malformed response — is wrapped with this message. It means kOps could not complete the reconcile's discovery phase.
Source
Thrown at upup/pkg/fi/cloudup/openstacktasks/lbpool.go:94
// Update all search terms
find.ID = a.ID
find.Name = a.Name
}
return a, nil
}
func (p *LBPool) Find(context *fi.CloudupContext) (*LBPool, error) {
if p.Name == nil && p.ID == nil {
return nil, nil
}
cloud := context.T.Cloud.(openstack.OpenstackCloud)
poolList, err := cloud.ListPools(v2pools.ListOpts{
ID: fi.ValueOf(p.ID),
Name: fi.ValueOf(p.Name),
})
if err != nil {
return nil, fmt.Errorf("Failed to list pools: %v", err)
}
if len(poolList) == 0 {
return nil, nil
}
if len(poolList) > 1 {
return nil, fmt.Errorf("Multiple pools found for name %s", fi.ValueOf(p.Name))
}
return NewLBPoolTaskFromCloud(cloud, p.Lifecycle, &poolList[0], p)
}
func (s *LBPool) Run(context *fi.CloudupContext) error {
return fi.CloudupDefaultDeltaRunMethod(s, context)
}
func (_ *LBPool) CheckChanges(a, e, changes *LBPool) error {
if a == nil {
if e.Name == nil {View on GitHub (pinned to 4c8573c808)
Solutions
- Inspect the wrapped error: for auth errors run `openstack token issue`; for endpoint errors run `openstack catalog list` and confirm octavia exists.
- Fix region/endpoint env vars (OS_REGION_NAME, OS_INTERFACE) so the load-balancer v2 endpoint resolves.
- Retry after transient 5xx/network errors — kops update is idempotent.
- Ensure the Octavia service is installed in the target cloud/region before using NLB load balancers.
Example fix
// before export OS_REGION_NAME=RegionTwo # octavia not deployed here // after export OS_REGION_NAME=RegionOne # region with octavia endpoint $ kops update cluster --name mycluster --yes
Defensive patterns
Strategy: retry
Validate before calling
// preflight: octavia endpoint resolvable and token valid
if _, err := openstackCatalogLookup("load-balancer", region); err != nil {
return fmt.Errorf("octavia endpoint missing for region %s: %w", region, err)
}
if _, err := keystoneTokenIssue(); err != nil { return fmt.Errorf("auth failed: %w", err) } Try / catch
err := retry.Do(func() error {
_, err := kopsFindPools()
if err == nil { return nil }
if isTransient(err) { return retry.Unrecoverable(err) } // 401/404 of endpoint won't heal
return err
}, retry.Attempts(3), retry.Delay(10*time.Second)) Prevention
- Set OS_REGION_NAME/OS_INTERFACE correctly so the octavia endpoint resolves.
- Ensure Octavia is deployed in the target region before enabling NLB load balancers.
- Refresh credentials for long-running kops operations.
When it happens
Trigger: Listing pools during `kops update/replace` when the Octavia endpoint is unreachable (network/DNS), the token is expired, or the service catalog lacks the load-balancer (octavia) endpoint for the region.
Common situations: Wrong OS_REGION_NAME so no octavia endpoint; Keystone auth failure; openstack load-balancer service not deployed in the cloud; transient 5xx from the Octavia API.
Related errors
- error deleting listener: %v
- error deleting loadbalancer: %v
- error creating loadbalancer: %v
- failed to list loadbalancers: %s
- failed to list members: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/591d47fa77f4ba39.
Report an issue: GitHub.