跳过主要内容

使用Kubernetes

以下是一些与在Kubernetes上运行Metaflow相关的有用提示和技巧。有关为Metaflow设置和操作Kubernetes的更多信息,请查看我们的工程资源。

我应该设置@timeout的值是多少?

Metaflow 设置了 5 天的默认超时时间,以防您的任务在 Kubernetes 上运行时无休止地卡住。有关如何使用 @timeout 的更多详细信息,请阅读 此处。

我可以请求多少 @resources

以下是不同资源类型的当前默认值:

  • cpu: 1
  • memory: 4096 4GB
  • disk: 10240 10GB

在设置 @resources 时,请记住您的 Kubernetes 集群的配置。如果 Kubernetes 无法提供所请求的资源,您的 pod 将处于无法调度的状态。此外,作为一个好的措施,不要请求超出您的工作流实际需要的资源。另一方面,绝不要过早地优化资源。

您可以通过使用 namespace 参数将您的 Kubernetes pod 放置在特定的命名空间中。默认情况下,所有 pod 在与启动流所使用的 Python 解释器版本相对应的原生 python docker image 上执行,并可以使用 image 参数进行覆盖。

您也可以在命令行中指定资源需求:

$ python BigSum.py run --with kubernetes:cpu=4,memory=10000,namespace=foo,image=ubuntu:latest

如何为Kubernetes配置GPU?

Metaflow 计算任务可以在任何 Kubernetes 集群上运行。首先,请查看 Kubernetes 关于调度 GPU 的文档。该指南解释了如何安装 Kubernetes 设备插件,以便您的集群暴露一个可调度的自定义资源,例如 amd.com/gpunvidia.com/gpu,当用户指定像 @kubernetes(gpu=1) 的装饰器时,Metaflow 的 Kubernetes 资源集成功能已经配置为调用它。

有关更多信息,请查看特定于云的文档:

如果您需要帮助设置集群,请联系 Metaflow Slack channel

一个 @kubernetes 任务一直卡在 PENDING 状态。我该怎么办?

您在Metaflow代码/命令中请求的资源是否足够?特别是在使用自定义GPU镜像时,您可能需要增加请求的内存以将容器镜像拉取到您的计算环境中。

访问Kubernetes日志

作为一个便利功能,您还可以查看任何过去步骤的日志,如下所示:

$ python bigsum.py logs 15/end

磁盘空间

您可以通过使用 disk 属性请求更高的磁盘空间来进行 pods 的操作 @kubernetes