Add option for health monitoring on provisioned load balancers
Bug #1853668 reported by
Paul Goins
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Openstack Integrator Charm |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
A Kubernetes customer had several load balancers provisioned which got into a state where roughly 50% of connections were being dropped. Some of the backends were having problems, but since health monitoring wasn't enabled, requests were still being served to the bad backends until we manually enabled health monitoring while trying to root cause the problem with the backends.
Having an option to provision health monitoring at the time of load balancer provisioning would allow us to mitigate a situation like this to some degree.
Changed in charm-openstack-integrator: | |
importance: | Undecided → Wishlist |
status: | New → Triaged |
To post a comment you must log in.
To be clear, when Kubernetes creates a service endpoint, it calls to the openstack integrator to create a neutron/octavia loadbalancer to provide the public IP for the service and creates back-end pool members based on the currently running pods of the replicaset.
When the backend for neutron can't reach the network endpoints of some of the pods, there is a denial of service in the round-robin format for each connection that is assigned to one of the unreachable backends.
The kubernetes environment can't monitor/know about the network access issues in the underlying cloud topology, so it can't remove/add pods as the network is segmented, however, adding an openstack healthmonitor to the pool for the loadbalancer can help the back-end loadbalancer to check network connectivity to the various pods and mark down those which are unreachable.
The suggestion is that the integrator, when creating a roundrobin TCP loadbalancer should also add a healthmonitor to the loadbalancer to avoid this situation.
There may also need to be further integration done to report back the health of the backend loadbalancer as part of the service endpoint status in the k8s cluster.