2017-09-04 61 views
2

现在OpenShift Online V2已经宣布它的服务结束,我正在寻找将我的Python应用程序迁移到OpenShift Online V3,又名OpenShift NextGen。熊猫是一个需求(并在requirements.txt中列出)OpenShift v3上的Pandas

它已经不是微不足道的get pandas installed in v2但V3不允许在构建过程中手动交互(或者是否?)。

当我尝试构建我的应用程序时,构建过程在一小时后停止。 pip已经下载并安装了requirements.txt的内容,并且正在为选定的软件包运行setup.py。日志文件和日志文件是

Running setup.py install for numpy 
Running setup.py install for Bottleneck 
Running setup.py install for numexpr 
Running setup.py install for pandas 

然后该过程停止,没有任何错误消息。

有没有人有线索如何构建OpenShift V3需要熊猫的Python应用程序?

+0

您试图从requirements.txt文件安装多少个不同的Python包?即使在重新创建Jupyter数据库笔记本所使用的相同软件包列表时,从未发现构建映像需要很长时间。你在哪个在线环境? –

+0

'requirements.txt'包含69行。在大约1小时左右之后,构建失败之前,'pip'快速运行并停止运行'setup.py' for pandas。我正在使用OpenShift Online 3 Starter来了解移植工作将会有多大。 – Fabian

+0

你在哪个特定的入门级实例,us-east-1,us-west-1或其他?有些时候有些缓慢。 –

回答

5

这将是两件事之一。

要么编译熊猫是一个巨大的内存猪,可能是由编译器击中一些病态的情况。或者,该点生成的图像的大小超过了内部限制,因此耗尽了分配的磁盘空间。

如果是内存,则需要增加分配给构建窗格的内存。默认情况下在线这是512Mi。

要增加限制,您需要从Web控制台编辑构建配置的YAML/JSON,或使用oc edit从命令行编辑YAML/JSON。

对于YAML,您需要添加以下内容:

resources: 
    limits: 
     memory: 1Gi 

这是设置字段:

$ oc explain bc.spec.resources.limits FIELD: limits <object> 

DESCRIPTION: 
    Limits describes the maximum amount of compute resources allowed. More 
    info: http://kubernetes.io/docs/user-guide/compute-resources/ 

最大的是1GI。这个值看起来增加了,这样就可以完成构建,而增加到768Mi是不够的。

请注意,这会使运行时的内存脱离compute-resources-timebound的配额,并且因为它在构建期间全部使用它,所以您同时尝试和执行的其他操作可能会受阻。

FWIW,在本地生成的图像尺寸,而不是在网上,仅生产了:

172.30.1.1:5000/mysite/osv3test    latest    f323d9b036f6  About an hour ago 910MB 

因此,除非使用的东西都清理之前中介空间是一个问题,这不是一个问题。

因此增加用于构建的内存似乎是答案。

+0

太棒了!非常感谢,格雷厄姆,一路走来!这是内存限制(而不是图像大小)。 v2的解决方案是手动删除gcc的优化级别。我想,编译器需要大量的内存资源来优化这些大型计算机生成的大熊猫随附的c文件。 – Fabian

+1

如果软件包有一个二进制轮,你也可以尝试添加一个''.s2i/environment''文件并在其中添加''UPGRADE_PIP_TO_LATEST = 1''。默认情况下不使用最新的''pip''版本,旧版本在二进制轮子上有一些问题。所以可能的是,如果有一个轮子,新版本的“pip”可能会使用它,所以不必从源代码编译它。 –

+0

非常感谢。但看到没有错误信息是非常不爽的! – bhushya