Agones 1.59.0:Fleet 管理更稳,滚动更新和端口范围进入稳定期

2026-07-02 32 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

Agones 1.59.0 已发布。这次更新的重点不是炫目的新 API,而是把多人游戏服务器编排里最容易影响线上体验的部分继续打磨:Fleet 管理能力增强,PortRanges 和 RollingUpdateFix 升级为稳定版,TotalAllocation 让 Fleet 分配情况更可见,同时修复了 FleetAutoscaler flapping 和控制器崩溃等关键问题。

这次版本最值得关注的变化

Agones 是运行在 Kubernetes 上的游戏服务器编排系统。对生产环境来说,Fleet、FleetAutoscaler、GameServer 分配和滚动更新的行为是否稳定,直接决定了玩家能否顺利进服、扩容是否可靠、发布是否可控。

1.59.0 的几个关键词很明确:

  • PortRanges 升级为稳定版:端口范围管理从实验/阶段性能力走向更适合生产采用的状态。
  • RollingUpdateFix 升级为稳定版:Fleet 滚动更新相关修复进入稳定阶段,发布游戏服务器镜像时的行为更可预期。
  • 引入 TotalAllocation 跟踪:Fleet 维度可以获得更深入的分配洞察,便于观察容量使用和调度压力。
  • 移除旧版玩家选择逻辑:旧逻辑被清理,减少长期维护负担,也提醒使用方检查是否依赖历史行为。
  • 修复 FleetAutoscaler flapping 问题和控制器崩溃问题:这类问题通常会直接影响线上稳定性,是升级评估里的高优先级项。

Fleet 管理:从“能跑”走向“可解释”

Fleet 是 Agones 中管理一组 GameServer 的核心对象。过去很多团队在排查问题时,会关心几个问题:当前到底分配了多少服务器?扩容是否过于频繁?滚动更新过程中旧版本和新版本的服务器是否按预期切换?

TotalAllocation 的价值就在这里。它把 Fleet 分配行为变成更容易观察的数据点。虽然不同团队的监控栈不同,但升级后可以围绕 Fleet 维度建立更清晰的容量看板,例如:

  • 某个游戏模式或区域的 Fleet 分配总量是否持续上升。
  • FleetAutoscaler 是否因为短时间分配波动反复扩缩容。
  • 滚动更新后,新版本 Fleet 是否承担了预期的分配流量。

这类指标不只是运维图表,它会影响容量策略。比如一个 Fleet 的分配量快速增长,但 Ready GameServer 始终偏低,就应该检查端口、节点资源、镜像启动时间或 autoscaler 策略,而不是只盯着 Pod 是否 Running。

PortRanges 和 RollingUpdateFix 稳定后,发布策略可以更踏实

游戏服务器不同于普通 Web 服务。一个 GameServer 往往需要暴露 UDP/TCP 端口,并且会持有玩家会话。端口分配和滚动更新如果不稳定,问题会立刻体现在玩家连接失败、房间创建失败或版本混杂上。

PortRanges 稳定后,团队可以更有信心地把端口范围作为 Fleet 设计的一部分。RollingUpdateFix 稳定后,发布流程也更适合纳入常规变更窗口,而不是只在低峰期手工盯着。

不过,稳定版不等于可以无脑升级。尤其是这次移除了旧版玩家选择逻辑,如果你的系统曾经依赖历史选择行为,需要在测试环境中验证分配路径,包括 matchmaker、GameServerAllocation、玩家重连和回滚流程。

可以这样实践:用 kubectl 检查 Fleet 和扩缩容行为

下面示例假设你已经在 Kubernetes 集群中安装了 Agones,并且当前上下文指向测试集群。镜像、端口和资源配置需要按你的游戏服务器实际情况修改。

可以先创建一个最小 Fleet,用于验证升级后的 Fleet、端口和滚动更新行为:

apiVersion: agones.dev/v1
kind: Fleet
metadata:
  name: simple-udp-fleet
spec:
  replicas: 2
  scheduling: Packed
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    spec:
      ports:
        - name: default
          portPolicy: Dynamic
          containerPort: 7654
          protocol: UDP
      template:
        spec:
          containers:
            - name: simple-server
              image: us-docker.pkg.dev/agones-images/examples/simple-game-server:0.36
              resources:
                requests:
                  memory: 64Mi
                  cpu: 20m
                limits:
                  memory: 64Mi
                  cpu: 20m

保存为 fleet.yaml 后执行:

kubectl apply -f fleet.yaml
kubectl get fleet simple-udp-fleet
kubectl get gameservers -l agones.dev/fleet=simple-udp-fleet -o wide

如果要观察滚动更新,可以改动镜像 tag 或环境变量后重新 apply:

kubectl set image fleet/simple-udp-fleet simple-server=us-docker.pkg.dev/agones-images/examples/simple-game-server:0.37
kubectl rollout status fleet/simple-udp-fleet --timeout=180s
kubectl get gameservers -l agones.dev/fleet=simple-udp-fleet

如果你的集群支持 Agones 的 GameServerAllocation,可以用一次分配请求验证 Fleet 是否能正常分配。下面示例可以按需改 namespace 和 selector:

apiVersion: allocation.agones.dev/v1
kind: GameServerAllocation
metadata:
  name: allocate-simple-server
spec:
  selectors:
    - matchLabels:
        agones.dev/fleet: simple-udp-fleet

执行:

kubectl create -f allocation.yaml -o yaml
kubectl get fleet simple-udp-fleet -o yaml
kubectl get gameservers -l agones.dev/fleet=simple-udp-fleet

这里重点不是示例镜像本身,而是建立一条可重复的升级验证链路:创建 Fleet、观察 GameServer、触发分配、检查 Fleet 状态、执行滚动更新,再确认分配路径仍然正常。

升级前的检查清单

Agones 1.59.0 对生产环境的吸引力在于稳定性修复和 Fleet 洞察增强,但升级仍然应该按游戏后端的发布纪律来做。

建议至少检查这些项:

  • 在测试集群验证 Fleet 创建、GameServerAllocation、滚动更新和回滚。
  • 检查是否依赖旧版玩家选择逻辑,尤其是 matchmaker 或自定义分配服务。
  • 观察 FleetAutoscaler 在真实或压测流量下是否还会出现频繁扩缩容。
  • 把 Fleet 分配相关指标接入现有监控,关注 TotalAllocation 带来的新观察维度。
  • 对使用动态端口或端口范围的 Fleet,确认节点防火墙、安全组和网络策略仍然匹配。
  • 控制器崩溃修复值得升级,但仍应保留升级窗口和回滚方案。

这次发布更像一次面向生产运维的加固:它让 Fleet 更容易管理,让分配情况更容易解释,也减少了 autoscaler 和控制器层面的不确定性。对已经在 Kubernetes 上运行实时游戏服务器的团队来说,1.59.0 值得尽快进入测试环境验证。


相关推荐