Skip to content

Immutable replicas field would allow PodDisruptionBudget on selected GameServer Pods #2806

@zmerlynn

Description

@zmerlynn

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions