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

  1. Verify the load-balancer service endpoint in the Keystone catalog: `openstack endpoint list | grep load-balancer`
  2. Confirm Octavia is deployed and responds: `curl <octavia-endpoint>/` or `openstack loadbalancer list`
  3. Check the cloud config's lb-service-type/octavia settings match the deployment
  4. 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

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


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/406d99fed0fd3d76. Report an issue: GitHub.