-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
-
0
-
False
-
-
False
-
?
-
rhos-connectivity-vans
-
None
-
-
-
-
Moderate
To Reproduce Steps to reproduce the behavior:
- During the creation of the network resources for Octavia, timeouts can occur in Neutron
- In this case, an error is raised and the reconcile function is triggered again
- In some situation, octavia-operator doesn't recover correctly the steps in the creation of the resources
- it's not 100% reproducible, it can randomly occur during the deployment (it happened a few times in my install_yamls env)
For instance
2026-01-13T09:39:33Z ERROR Controllers.Octavia Unable to create router object {"controller": "octavia", "controllerGroup": "octavia.openstack.org", "controllerKind": "Octavia", "Octavia": {"name":"octavia","namespace":"openstack"}, "namespace": "openstack", "name"
: "octavia", "reconcileID": "5e8574fb-61b1-45b7-8a82-763292307f70", "error": "Post \"https://neutron-internal.openstack.svc:9696/v2.0/routers\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)"} github.com/openstack-k8s-operators/octavia-operator/internal/octavia.EnsureAmphoraManagementNetwork
/remote-source/internal/octavia/lb_mgmt_network.go:1036 github.com/openstack-k8s-operators/octavia-operator/internal/controller.(*OctaviaReconciler).reconcileNormal
/remote-source/internal/controller/octavia_controller.go:749 github.com/openstack-k8s-operators/octavia-operator/internal/controller.(*OctaviaReconciler).Reconcile
/remote-source/internal/controller/octavia_controller.go:234 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:116
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:303
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:263
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:224
2026-01-13T09:39:34Z ERROR Reconciler error {"controller": "octavia", "controllerGroup": "octavia.openstack.org", "controllerKind": "Octavia", "Octavia": {"name":"octavia","namespace":"openstack"}, "namespace": "openstack", "name": "octavia", "reconcileID": "5e8
574fb-61b1-45b7-8a82-763292307f70", "error": "Post \"https://neutron-internal.openstack.svc:9696/v2.0/routers\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)"}
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:316
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:263
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2
/opt/app-root/src/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.19.7/pkg/internal/controller/controller.go:224
when the creation of the router fails with a timeout, the router might be correctly created by neutron, then in the next call to the reconcile function the router creation call is skipped, but it also skips the section that adds the subnet to the router:
It leads to this router configuration:
$ openstack router show octavia-link-router
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2026-01-13T09:39:25Z |
| description | |
| enable_ndp_proxy | None |
| external_gateway_info | {"network_id": "cc889230-99eb-4838-bb70-e4562e46bc7e", "external_fixed_ips": [{"subnet_id": "a7b31857-a019-4d50-a550-0763d3f9c937", "ip_address": "172.23.0.150"}], "enable_snat": false} |
| flavor_id | None |
| id | b9d7bca0-bf58-41cf-8ab1-957980f36a01 |
| interfaces_info | [] |
| name | octavia-link-router |
| project_id | 828b8d8f648843418debfd8931772054 |
| revision_number | 3 |
| routes | |
| status | ACTIVE |
| tags | |
| tenant_id | 828b8d8f648843418debfd8931772054 |
| updated_at | 2026-01-13T09:39:31Z |
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
The router is set up but not connected to the lb-mgmt-subnet subnet (interfaces_info is empty)
Expected behavior
- Octavia resources are correctly configured even when some services are not ready or trigger timeouts
Bug impact
- Management network doesn't work, customer cannot create load balancers (load balancers are moved to provisioning_status ERROR after a very long timeout).
Known workaround
- Delete the router, trigger the reconcile function