卸载大型工作流¶
v2.4 及更高版本
Argo将工作流存储为Kubernetes资源(即存储在EtcD中)。由于资源大小必须小于1MB,这对其规模形成了限制。每个资源都包含各节点的状态信息,这些状态存储在资源的/status/nodes字段中。该字段可能超过1MB。若发生这种情况,我们会尝试压缩节点状态并将其存储在/status/compressedNodes中。如果状态数据仍然过大,我们将尝试将其存储到SQL数据库中。
要启用此功能,请在您的配置中的persistence下配置Postgres或MySQL数据库,并设置nodeStatusOffLoad: true。
常见问题¶
为什么我的工作流没有出现在数据库中?¶
Offloading is expensive and often unnecessary, so we only offload when we need to. Your workflows aren't probably large enough.
错误 Failed to submit workflow: etcdserver: request is too large.¶
你必须使用已导出export ARGO_SERVER=...的Argo CLI。
错误 offload node status is not supported¶
即使压缩了节点状态后,工作流仍超出了EtcD的大小限制。要解决此问题,可以按照上述说明启用节点状态卸载功能,或者寻找方法来减小工作流清单的大小:
- 使用
withItems或withParams将相似的模板合并为单个参数化模板 - 使用模板默认值将共享模板选项提取到工作流级别
- 使用工作流模板将常用模板分解为独立的资源
- 使用工作流的工作流将大型工作流分解为较小工作流的工作流