You need to enable JavaScript to run this app. max_replicas_per_node是否会限制update_config的parallelism参数?
优惠活动
大模型
产品
解决方案
定价
更多

max_replicas_per_node是否会限制update_config的parallelism参数?

结论

你的猜测完全正确。max_replicas_per_node是Swarm调度器的硬限制,绝对不允许单个节点上同服务的运行副本数超过该阈值。你采用start-first更新策略+parallelism: 2的配置时,Swarm需要先启动2个新版本副本,再销毁旧版本副本,但当前集群只有1个可用节点,旧版本副本已经占用了该节点的配额,新副本无节点可调度,因此一直处于Pending状态。

方案说明

首先明确客观限制:当集群可用节点数 < 服务当前实际运行副本数时,start-first策略和max_replicas_per_node限制天然冲突,无法同时满足——因为新副本没有可用节点配额,必须先销毁旧副本释放资源才能启动新副本。
给出适配你全部需求的配置方案:

services:
  nodejs:
    deploy:
      replicas: 2
      restart_policy:
        condition: any
      placement:
        max_replicas_per_node: 1
      update_config:
        parallelism: 1
        order: stop-first
        delay: 10s
        failure_action: rollback
        monitor: 20s

配置适配逻辑

  • 满足单节点配额限制:max_replicas_per_node: 1始终生效,不会出现单节点跑多个副本的情况,符合硬件成本要求。
  • 满足自动扩容调度:replicas: 2配置保留,Swarm调度器会持续检测集群节点资源,新节点加入后会自动将Pending的第二个副本调度到新节点运行,无需人工操作。
  • 满足节点充足后的无中断更新:当集群扩容到2个及以上节点后,将update_config调整为如下配置即可实现需求:
    update_config:
      parallelism: 2
      order: start-first
      delay: 10s
    
    此时更新服务会先在两个节点分别启动新版本副本,健康检查通过后再销毁旧版本副本,全程无服务中断。

内容的提问来源于stack exchange,提问作者Colin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:36:06