-
Notifications
You must be signed in to change notification settings - Fork 857
Closed
Description
Is your feature request related to a problem? Please describe.
Agones has a number of friction points on GKE Autopilot:
- Arbitrary host port selection is not allowed (
denied by autogke-no-host-port
) - Use of the
cluster-autoscaler.kubernetes.io/safe-to-evict=false
to minimize disruption (denied by autogke-node-affinity-selector-limitation
):- On game server pods, Agones defaults to
cluster-autoscaler.kubernetes.io/safe-to-evict=false
annotation - this can be mitigated with Allow cluster autoscaler to scale down game server pods #2747 - The Agones controller also defaults to `cluster-autoscaler.kubernetes.io/safe-to-evict=false', presumably because it is not HA and would like to minimize disruption, e.g. Split agones controller into leader elected pods #1296
- On game server pods, Agones defaults to
Note that Autopilot issues were previously brought up in #2249 - the state of the world has changed considerably since then (mutating webhooks are now allowed), but there are still friction points.
Describe the solution you'd like
I propose the following:
- We've recently added a feature to allow for Autopilot host port assignment using a special annotation. In order to allow this to be used with Agones, I propose:
- A small cloud-provider library to allow for per-provider abstractions
- In said cloud provider abstraction, we add a game server pod interceptor that can add the appropriate annotation
- We also add a validator that the
portPolicy
isDynamic
(we may be able to supportPassthrough
later, but let's start here) - (This section is complete with Sync Pod host ports back to GameServer in GCP #2782 and Split port allocators, implement Autopilot port allocation/policies #2789)
- The controllers/webhooks/allocator can be made HA, at which point we won't need to annotate
safe-to-evict=false
(Design: Make it possible to evictagones-controller
by separating into controller/extensions #2797). - So much testing.
- Add docs!
Metadata
Metadata
Assignees
Labels
kind/featureNew features for AgonesNew features for Agones