{"record":{"id":"380e2b0665a9f784","repo":"kubernetes/kops","slug":"error-creating-lb-v","errorCode":null,"errorMessage":"error creating LB: %v","messagePattern":"error creating LB: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/openstacktasks/lb.go","lineNumber":217,"sourceCode":"\t\t\tName: fi.ValueOf(e.Subnet),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"Failed to retrieve subnet `%s` in loadbalancer creation: %v\", fi.ValueOf(e.Subnet), err)\n\t\t}\n\t\tif len(subnets) != 1 {\n\t\t\treturn fmt.Errorf(\"Unexpected desired subnets for `%s`.  Expected 1, got %d\", fi.ValueOf(e.Subnet), len(subnets))\n\t\t}\n\n\t\tlbopts := loadbalancers.CreateOpts{\n\t\t\tName:        fi.ValueOf(e.Name),\n\t\t\tVipSubnetID: subnets[0].ID,\n\t\t}\n\t\tif e.FlavorID != nil {\n\t\t\tlbopts.FlavorID = fi.ValueOf(e.FlavorID)\n\t\t}\n\t\tlb, err := t.Cloud.CreateLB(lbopts)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error creating LB: %v\", err)\n\t\t}\n\t\te.ID = new(lb.ID)\n\t\te.PortID = new(lb.VipPortID)\n\t\te.VipSubnet = new(lb.VipSubnetID)\n\t\te.Provider = new(lb.Provider)\n\t\te.FlavorID = new(lb.FlavorID)\n\n\t\tif e.SecurityGroup != nil {\n\t\t\topts := ports.UpdateOpts{\n\t\t\t\tSecurityGroups: &[]string{fi.ValueOf(e.SecurityGroup.ID)},\n\t\t\t}\n\t\t\t_, err = ports.Update(context.TODO(), t.Cloud.NetworkingClient(), lb.VipPortID, opts).Extract()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"Failed to update security group for port %s: %v\", lb.VipPortID, err)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}","sourceCodeStart":199,"sourceCodeEnd":235,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/openstacktasks/lb.go#L199-L235","documentation":"kOps failed at the Octavia load balancer create API call (t.Cloud.CreateLB) after resolving the VIP subnet. The wrapped gophercloud error carries the real cause (quota, auth, Octavia unavailable, invalid flavor, etc.).","triggerScenarios":"CreateLB(lbopts) returns an error during `kops update cluster` — e.g. Octavia service not present in the catalog, load balancer quota exceeded, flavor_id invalid, or the chosen subnet's network cannot host a VIP.","commonSituations":"Cluster deployed in a cloud/region without Octavia installed; octavia quota 'load_balancer' exhausted; user passed an invalid loadBalancer flavor in config; neutron network disabled for VIP allocation.","solutions":["Read the wrapped %v cause in the kops log to identify the API error (403/404/409/413 etc.)","Verify Octavia is installed and listed in `openstack service list` and that the k8s cluster config uses the octavia provider","Check load balancer quota with `openstack quota show` and delete unused LBs or raise the quota","If flavorID is set in the spec, validate it against `openstack loadbalancer flavor list`"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Pre-flight: confirm Octavia is available and quota allows one more LB\nopenstack loadbalancer list >/dev/null && echo octavia-ok\nopenstack quota show -f value | grep -i 'load_balancers'","typeGuard":null,"tryCatchPattern":"err := t.Cloud.CreateLB(lbopts)\nif err != nil {\n    var gerr gophercloud.ErrUnexpectedResponseCode\n    if errors.As(err, &gerr) && (gerr.StatusCode == 429 || gerr.StatusCode >= 500) {\n        // transient: backoff and retry\n        return retry.After(backoff, err)\n    }\n    return fmt.Errorf(\"error creating LB: %w\", err) // permanent: fail fast\n}","preventionTips":["Verify Octavia is installed in the region before enabling the openstack provider","Monitor load balancer quota and clean unused LBs","Validate any configured flavorID against `openstack loadbalancer flavor list`"],"tags":["openstack","loadbalancer","octavia","api-error"],"backgroundTag":"cloud-api-request-failed","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}