我有一个Python脚本可以真正吃掉一些CPU和内存。因此,我认为运行脚本的最有效方法是将其集中在Docker容器中。该脚本并不意味着永远运行。相反,它从环境变量获取依赖性信息,它的行为是否然后终止。脚本结束后,默认情况下Docker将从内存中删除容器。
这很好。我只是在运行脚本时为计算资源付费。
我的问题是:我可以运行许多不同类型的脚本。我想要做的是创建一个管理器,给定要运行的脚本类型的名称,获取标识的容器以在Google容器引擎中运行,例如调用配置为使用预定义的CPU,磁盘和内存分配旨在尽快运行脚本的环境。
然后,一旦脚本完成,我希望从环境中删除容器,以便我不再为资源付费。换句话说,我希望能够在Container Engine中以自动方式完成我可以在命令行从本地计算机手动执行的操作。
我正在尝试学习如何让Container Engine以自动方式支持我的需求。在我看来,使用Kubernetes可能有点过分,因为我真的不想保证持续可用性。相反,我只是希望容器运行并死亡。如果由于某种原因,脚本在成功之前失败或终止,则该架构旨在检测不成功的尝试。
答案 0 :(得分:0)
您可以使用Kubernetes控制器创建“运行至完成”的作业对象。
此类作业对象可用于运行单个窗格。
一旦作业(在本例中为您的脚本)完成,pod就会终止,因此将不再使用任何资源。该pod不会被删除(除非该作业被删除),但将保持终止状态。如果需要并正确配置,则不会再创建任何pod。
如果您需要此功能,如果作业因任何原因失败,也可以将作业对象配置为启动新窗格。
有关详细信息,请参阅此page。
另外,为了使您的计费保持在最低水平,您可以在不运行作业时将群集中的节点数减少到零,然后在作业需要时将其增加到所需的数量被执行。如果需要,可以通过使用API调用以编程方式完成此操作。这应该确保您的计费保持尽可能低,因为只有节点在运行时才会收费。