-
Notifications
You must be signed in to change notification settings - Fork 896
Immutable replicas field would allow PodDisruptionBudget on selected GameServer Pods #2806
Description
Is your feature request related to a problem? Please describe.
Today, you can't use maxUnavailable: 0% in a PodDisruptionBudget that effects GameServer Pods because it falls in the "arbitrary controller" logic.
Describe the solution you'd like
If we add an immutableReplicas field, default/min/max = 1, and implement the scale subresource on the CRD, a PodDisruptionBudget can use maxUnavailable. This would allow us to ship a PodDisruptionBudget that looked like e.g.:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: gameserver-disruption
spec:
maxUnavailable: 0%
selector:
matchLabels:
agones.dev/role: gameserver
We probably would need to agree on a label selector (this example captures all GS but we want it tunable per Fleet). We want this to be the equivalent of safe-to-evict=false, basically, so we might just add an equivalent annotation. This could tie into #2794, so we could make policy like PDB flow from disruption tolerance.
Describe alternatives you've considered
Not implement it. PDB is yet another disruption control, and one more universally honored than safe-to-evict=false. I want it for #2777 because on Autopilot it provides a better guarantee.
Additional context
Discussed in #553, but with #2777 I'm probing for other ways to (officially) support safe-to-evict=false.