Replies: 3 comments 1 reply
-
|
+1 to setting |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
I wonder if we should also add the |
Beta Was this translation helpful? Give feedback.
1 reply
-
|
also linking another runtime flag envoyproxy/envoy#41442 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Foreword
Started this as a discussion because I am not sure what the action item(s) would be (if any).
This is to continue with the good habit of opening an issue/discussion when something requires modify the Envoy config directly (with e.g.
EnvoyPatchPolicyorEnvoyProxy.spec.bootstrap) to explore better support options due to the brittle nature of these hacks/workarounds.Context
We have Envoy functioning as an L2 proxy receiving HTTP2 connections from the L1 proxy (downstream). The L1 proxy sits outside Kubernetes, and is not aware of Kubernetes pods or nodes, it only connects to the IP address of a network load-balancer. Envoy has an
HorizontalPodAutoscalerconfigured to scale when memory usage reaches 70% (lower than the 80% threshold of the overload manager)Problem
When traffic increases, downstream sends more requests/opens more HTTP2 connections, and the memory usage of Envoy increases, triggering its scale-out. However most connections are opened to the existing Envoy pods before the new pods are created. When the new pods come up, they are not used because from downstream's point of view, there are enough connections to serve the traffic, so the existing pods remain overloaded.
On top of rejecting requests (the overload action
envoy.overload_actions.stop_accepting_requests), Envoy needs a way to communicate to downstream that the HTTP2 connection should be closed, so downstream would open a new one which should go to new pods. For that purpose exist the load shed points, specificallyenvoy.load_shed_points.http2_server_go_away_on_dispatch.Current solution
Edit: the
envoy.overload_actions.disable_http_keepaliveaction might be a better option (#8748 (comment))Questions
envoy.load_shed_points.http2_server_go_away_on_dispatchbe a sane default to incorporate into the controller alongside the current actions?EnvoyProxy.spec.bootstrap?Beta Was this translation helpful? Give feedback.
All reactions