Servidores de Jogos

Kubernetes para servidores de jogo: escalar com Agones (guia avançado)

Aviso franco

Kubernetes para servidor de jogo é overkill em 95% dos casos.

Se você tem:

  • 1-3 servidores fixos
  • < 500 players total
  • Foco em custo mínimo

Não use Kubernetes. Docker Compose (nosso tutorial) resolve.

Kubernetes faz sentido se você:

  • Roda dezenas de servidores dinamicamente
  • Precisa spawn on-demand (novo server ao encher outro)
  • Tem network gigante (Hypixel, Mineplex scale)
  • Quer multi-região com failover
  • É negócio SaaS de hosting

Se você reconhece um desses cenários, continue lendo.

O que Kubernetes faz por você

  • Orquestra containers em cluster de VMs
  • Auto-scale (spawn/destruir com base em load)
  • Load balance entre servers
  • Rolling updates sem downtime
  • Self-healing (nó cai → move workload)
  • Secret management (senhas, tokens)

Por que jogo é difícil no K8s

Jogos são stateful. Um player está conectado a 1 server específico por horas. Se K8s decide mover o pod, player desconecta.

K8s puro foi pensado para HTTP stateless. Jogo precisa de tooling extra.

Agones — a solução

Agones é framework do Google para game servers em K8s. Open-source, usado por gigantes (Ubisoft, Roblox, etc).

O que Agones adiciona:

  • GameServer CRD — recurso K8s pra game server específico
  • Fleet CRD — pool de game servers prontos
  • Allocation — pega um GameServer livre para player
  • Health check integrado com o game
  • Scaling automático baseado em jogadores

Arquitetura básica

[Player] → [Matchmaker / API]
              ↓
[Agones Allocator]
              ↓
[Fleet: 10 GameServers "Ready"]
              ↓ (1 vai pra "Allocated")
[GameServer específico → PodIP:Port]
              ↓
Player conecta

Quando fleet esvazia (poucos "Ready"), auto-scaler cria novos GameServers.

Setup mínimo (dev)

1. Cluster K8s

Local: minikube ou kind. Cloud: EKS, GKE, AKS, DigitalOcean K8s.

minikube start --cpus=4 --memory=8g

2. Instalar Agones

kubectl create namespace agones-system
helm repo add agones https://agones.dev/chart/stable
helm install my-release agones/agones --namespace agones-system

3. Deploy GameServer example

gameserver.yaml:

apiVersion: agones.dev/v1
kind: GameServer
metadata:
  name: mc-example
spec:
  container: mc
  ports:
    - name: default
      portPolicy: Dynamic
      containerPort: 25565
      protocol: TCP
  template:
    spec:
      containers:
        - name: mc
          image: itzg/minecraft-server:latest
          env:
            - name: EULA
              value: "TRUE"
            - name: TYPE
              value: "PAPER"
kubectl apply -f gameserver.yaml
kubectl get gameservers

Agones cria o pod, expõe porta dinâmica, marca "Ready".

4. Fleet (pool de servers)

fleet.yaml:

apiVersion: agones.dev/v1
kind: Fleet
metadata:
  name: mc-fleet
spec:
  replicas: 5     # 5 servers prontos
  template:
    spec:
      container: mc
      ports:
        - name: default
          portPolicy: Dynamic
          containerPort: 25565
          protocol: TCP
      template:
        spec:
          containers:
            - name: mc
              image: itzg/minecraft-server:latest
              env: [{name: EULA, value: "TRUE"}, {name: TYPE, value: "PAPER"}]
kubectl apply -f fleet.yaml
kubectl get gameservers    # 5 "Ready"

5. Allocation (player pede server)

kubectl create -f - <<EOF
apiVersion: allocation.agones.dev/v1
kind: GameServerAllocation
spec:
  required:
    matchLabels:
      agones.dev/fleet: mc-fleet
EOF

Retorna o GameServer alocado (nome, IP, porta). Frontend passa ao player.

Auto-scaling

apiVersion: autoscaling.agones.dev/v1
kind: FleetAutoscaler
metadata:
  name: mc-autoscaler
spec:
  fleetName: mc-fleet
  policy:
    type: Buffer
    buffer:
      bufferSize: 3      # sempre 3 "Ready" prontos
      minReplicas: 1
      maxReplicas: 100

Quando players entram (Allocated), Agones cria novos automaticamente.

Real cost analysis

Cluster K8s básico rodando (GKE, DigitalOcean K8s):

  • Control plane: US$ 70+/mês (managed) ou grátis (self-managed)
  • 3 worker nodes 4 vCPU 8 GB: US$ 60/mês cada = US$ 180
  • Total mínimo: US$ 250-350/mês

Comparado a 10 VPS separadas rodando servers:

  • 10 × US$ 20 = US$ 200/mês

Kubernetes só compensa em larga escala (30+ servers, elasticidade real).

Alternativas mais leves

Docker Swarm

Docker Swarm é K8s "light". Setup em 5 min, orquestração básica.

docker swarm init
docker stack deploy mc-stack docker-compose.yml

Bom para 5-20 servers sem complexidade K8s.

Nomad (HashiCorp)

Nomad é outro orquestrador, mais simples que K8s. Usado por Cloudflare, Netflix.

Managed services

Se fim é ter game servers rodando dinamicamente sem manter cluster:

  • PlayFab Multiplayer Servers (Microsoft)
  • AccelByte
  • Multiplay (Unity)

Todos cobram premium mas eliminam complexidade K8s.

Quando usar K8s + Agones

✅ Sim:

  • Você é gigante (Hypixel-scale)
  • Multi-região (SP + Miami + EU)
  • Elasticidade crítica (Battle Royale que sobe/desce servers a cada minuto)
  • Time DevOps dedicado

❌ Não:

  • Servidor único
  • Small hosting (10-30 servers)
  • Sem experiência K8s
  • Quer minimizar custo

Conclusão

Kubernetes + Agones é poderoso e overkill ao mesmo tempo. Só use se souber por quê.

Para 99% dos servidores brasileiros, Docker Compose em VPS dedicated é suficiente. Nossos VPS-BR rodam containers sem restrição.

Se você opera hosting de jogos em escala, Kubernetes vale o investimento — mas o time DevOps precisa ser sólido.

Links

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS
⏰ 20% OFF em VPS-BR --:--:-- Ver oferta →