kubernetes/kops · error
loadbalancer API versions not found
Error message
loadbalancer API versions not found
What it means
Error indicating the OpenStack load-balancer (Octavia/Neutron-LBaaS) API returned zero versions when probing whether v2 load balancer support exists. kOps treats an empty version list as unusable and fails the check rather than guessing.
Source
Thrown at upup/pkg/fi/cloudup/openstack/cloud.go:741
}
c.useVIPACL = &use
return use, nil
}
func useLoadBalancerVIPACL(c OpenstackCloud) (bool, error) {
if c.LoadBalancerClient() == nil {
return false, nil
}
allPages, err := apiversions.List(c.LoadBalancerClient()).AllPages(context.TODO())
if err != nil {
return false, err
}
versions, err := apiversions.ExtractAPIVersions(allPages)
if err != nil {
return false, err
}
if len(versions) == 0 {
return false, fmt.Errorf("loadbalancer API versions not found")
}
ver, err := semver.ParseTolerant(versions[len(versions)-1].ID)
if err != nil {
return false, err
}
// https://github.com/kubernetes/cloud-provider-openstack/blob/721615aa256bbddbd481cfb4a887c3ab180c5563/pkg/util/openstack/loadbalancer.go#L108
return ver.Compare(semver.MustParse("2.12.0")) > 0, nil
}
type Address struct {
IPType string `mapstructure:"OS-EXT-IPS:type"`
Addr string
}
func (c *openstackCloud) GetApiIngressStatus(cluster *kops.Cluster) ([]fi.ApiIngressStatus, error) {
return getApiIngressStatus(c, cluster)
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Verify the load-balancer service endpoint in the Keystone catalog: `openstack endpoint list | grep load-balancer`
- Confirm Octavia is deployed and responds: `curl <octavia-endpoint>/` or `openstack loadbalancer list`
- Check the cloud config's lb-service-type/octavia settings match the deployment
- Retry after fixing the endpoint; this is a configuration not a transient fault
Defensive patterns
Strategy: validation
Validate before calling
// preflight before kops create
allPages, err := apiversions.List(lbClient).AllPages(ctx)
if err != nil || len(apiversions.ExtractAPIVersions(allPages)) == 0 {
return fmt.Errorf("octavia endpoint returned no API versions; check catalog")
} Try / catch
if len(versions) == 0 {
return false, fmt.Errorf("loadbalancer API versions not found") // fix endpoint, don't retry blindly
} Prevention
- Run `openstack endpoint list | grep load-balancer` before cluster creation
- Confirm Octavia is actually deployed, not just configured
- Keep the lb-service-type cloud config aligned with the deployed service
When it happens
Trigger: apiversions.List against the load-balancer endpoint succeeds but ExtractAPIVersions yields an empty slice — the endpoint exists but publishes no API versions.
Common situations: Octavia service misregistered in the catalog pointing to a wrong/empty endpoint; lb-service-type misconfiguration; proxy or load balancer in front of Octavia returning an empty body; Octavia not actually deployed.
Related errors
- failed to build load balancer client: %w
- error building lb client: %w
- GetApiIngressStatus: Failed to list openstack loadbalancers:
- error deleting loadbalancer: %v
- error creating loadbalancer: %v
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/406d99fed0fd3d76.
Report an issue: GitHub.