jeremylvln / Shulker

A Kubernetes operator for managing complex and dynamic Minecraft infrastructures, including game servers and proxies.
https://shulker.jeremylvln.fr/
GNU Affero General Public License v3.0
159 stars 10 forks source link

Autoscaling with Agones set replicas to 0 #443

Open Svetch opened 4 months ago

Svetch commented 4 months ago

What happened?

Hi!

I enabled the autoscaling for a MinecraftServerFleet with this options:

  autoscaling:
    agonesPolicy:
      type: Buffer
      buffer:
        bufferSize: "30%"
        minReplicas: 2
        maxReplicas: 6

and now the fleet replicas count is 0

  replicas: 0
  scheduling: Packed
  strategy:
    type: Recreate

FleetAutoscaler status:

spec:
  fleetName: arena
  policy:
    buffer:
      bufferSize: 30%
      maxReplicas: 6
      minReplicas: 2
    type: Buffer
  sync:
    fixedInterval:
      seconds: 30
    type: FixedInterval
status:
  ableToScale: true
  currentReplicas: 0
  desiredReplicas: 2
  lastScaleTime: '2024-03-06T08:16:35Z'
  scalingLimited: true

What components are involved in your issue?

Operator

Version

0.7.0

Kubernetes Version

1.28

Relevant log output

{"timestamp":"2024-03-06T08:14:35.884131Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:14:36.185523Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:15:05.891017Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:15:06.186492Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:15:35.891614Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:15:36.179388Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:16:05.888015Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:16:06.205542Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:16:35.891946Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:16:36.216893Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:17:05.883890Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:17:06.192745Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:17:35.887584Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:17:36.180342Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:18:05.888310Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:18:06.225502Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: FleetAutoscaler.v1.autoscaling.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}
{"timestamp":"2024-03-06T08:18:35.886955Z","level":"INFO","fields":{"message":"reconciling MinecraftServerFleet","name":"arena","namespace":"shulker-system"},"target":"shulker_operator::reconcilers::minecraft_server_fleet","span":{"name":"reconcile"},"spans":[{"object.reason":"related object updated: Fleet.v1.agones.dev/arena.shulker-system","object.ref":"MinecraftServerFleet.v1alpha1.shulkermc.io/arena.shulker-system","name":"reconciling object"},{"name":"reconcile"}]}

Code of Conduct

jeremylvln commented 4 months ago

Hi @Svetch!

Hope you are doing well & thanks for opening this issue.

I know what is the issue here, I think Agones & Shulker are fighting each other to update the Fleet. Probably the replicas field. The "framework" I created for managing easily Kubernetes resources does not know yet how to "ignore" certain modifications. But it's something I already had in mind.

I'll try to fix this ASAP, I'm quite busy this week but I'll try to look into it at the beginning of the next week!

CronixZero commented 3 weeks ago

Bump 👋