Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace sidecar with DaemonSet #107

Closed
dgkanatsios opened this issue Dec 15, 2021 · 0 comments · Fixed by #97
Closed

Replace sidecar with DaemonSet #107

dgkanatsios opened this issue Dec 15, 2021 · 0 comments · Fixed by #97
Assignees
Milestone

Comments

@dgkanatsios
Copy link
Collaborator

Currently thundernetes uses a sidecar to

  • handle GSDK heartbeats
  • update the GameServer/GameServerDetail CRs with the updated status of the game server process
  • create a Watch towards the K8s API server to get a notification when the game server has been allocated

The sidecar is dynamically created by thundernetes when a new game server Pod is created

We will change this implementation to use a DaemonSet instead. The DaemonSet process will listen to heartbeats coming from the same Node (game server Pods scheduled on the same Node as the corresponding DaemonSet Pod) and will create a Watch only for the GameServer CRs which have Pods on that Node. The benefits to using a DaemonSet over a sidecar are:

  • more lightweight approach on the GameServer Pod, since we're going to have one less container (faster to start, smaller consumption of resources)
  • less pressure on the K8s API server since we will have less Watches (just one for each Node)
  • ability to support hostNetwork by the GameServer Pods (Consider Host Networking mode for pods #22)
  • easier way to grab prometheus metrics for connected players (allocator draft #28)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant