Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-25253

Incomplete Octavia Network deployment due to timeout in Neutron API

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • octavia-operator
    • None
    • Moderate

      To Reproduce Steps to reproduce the behavior:

      1. During the creation of the network resources for Octavia, timeouts can occur in Neutron
      2. In this case, an error is raised and the reconcile function is triggered again
      3. In some situation, octavia-operator doesn't recover correctly the steps in the creation of the resources
      4. 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:

       

      https://github.com/openstack-k8s-operators/octavia-operator/blob/main/internal/octavia/lb_mgmt_network.go#L1040-L1049

      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

              Unassigned Unassigned
              rhn-support-gthiemon Gregory Thiemonge
              rhos-dfg-networking-squad-vans
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: