跳至内容

卸载大型工作流

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的大小限制。要解决此问题,可以按照上述说明启用节点状态卸载功能,或者寻找方法来减小工作流清单的大小:

  • 使用withItemswithParams将相似的模板合并为单个参数化模板
  • 使用模板默认值将共享模板选项提取到工作流级别
  • 使用工作流模板将常用模板分解为独立的资源
  • 使用工作流的工作流将大型工作流分解为较小工作流的工作流

有问题吗?

Search on GitHub Discussions and Slack.