我有一个1/1主/从设置,从有8gb ram 8 CPU。我试图使用马拉松部署一个具有1gb内存和1个cpu的docker容器,但它只是挂起等待
我相信这通常是由于marathon在查看日志时没有获得任务所需的资源造成的
将1份报价发送至框架8bb1a298-cc23-426e-ad43-d440a2a560c4-0000(马拉松)scheduler-d4a993b4-69ea-4ac3-9e98-b54afe1e790b@127.0.0.1:52016 i0127 23:07:37.396546 2471主机。cpp:3297]正在处理拒绝询价:[5271fcb3-4d77-4b12-af85-d94fd9172514-o127]for framework 8bb1a298-cc23-426e-ad43-d440a2a560c4-0000(marathon)atscheduler-d4a993b4-69ea-4ac3-9e98-b54afe1e790b@127.0.0.1:52016 i0127 23:07:37.396917 2466分层。cpp:744]恢复的CPU():6; 记忆():5968; 磁盘():156020; 端口():[31000-31056、31058-32000](总计:CPU)():8; 记忆():6992; 磁盘():156020; 端口():[31000-32000],分配:CPU():2; 记忆():1024; 来自框架8bb1a298-cc23-426e-ad43-d440a2a560c4-0000的从机8bb1a298-cc23-426e-ad43-d440a2a560c4-s0上的端口(*):[31057-31057])
看来马拉松拒绝了它的报价?日志中的下一行说mesos正在回收所提供的资源,而它的回收对于我的任务来说似乎足够了?
有没有办法进一步解决这个问题?
编辑:所以我要深入研究一下,找到马拉松比赛的记录。
基本上,如果我们不在marathondocker部分输入任何端口Map信息,部署就可以工作。docker容器部署成功,我可以从其主机成功ping它,但无法从其他地方访问它。
如果我们将容器端口设置为8081(docker容器公开的是它的应用程序监听的端口),那么我们在部署过程中会更进一步,但是容器中的应用程序无法生成,并且出现错误
错误:listen eaddrinuse::8081 at object.exports.\u errnoexception(util.js:856:11)at exports.\u exception with hostport(util.js:879:20)at server.\u listen2(net.js:1234:14)at listen(net.js:1270:10)at server.listen(net.js:1366:5)at eventemitter.listen(/usr/src/app/node\u modules/express/lib/application.js:617:24)at object(/usr/src/app/index.js:16:18)在module.\u编译(module.js:425:26)在object.module.\u扩展..js(module.js:432:10)在module.load(module.js:356:32)在function.module.\u加载(module.js:313:12)在function.module.runmain(module.js:457:10)在node.js:974:3启动(node.js:138:18)
所以我认为我们比以前走得更远了,但是我们仍然有一些港口问题。我不知道为什么容器会成功地建立自己和马拉松没有端口设置,但没有马拉松与端口设置
1条答案
按热度按时间pcrecxhr1#
有几件事需要检查:
在你的奴隶身上:
ps aux | grep sbin/mesos-slave
应该包含以下内容:--containerizers=docker,mesos --executor_registration_timeout=5mins
再次检查是否有docker守护进程在运行:ps aux | grep "docker daemon"
确保已将docker network(在marathon中)配置为BRIDGE
. 与HOST
模式可能会与主机上已使用的端口发生冲突。这将允许Mapslave:32001 -> docker:8080
.当任务在marathon中启动时,您将看到如下应用程序id
myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf
. 使用mesos cli(pip install mesos.cli mesos.interface
)去拿木头。有一个类似于unix的命令tail
用于获取stdout
日志(-f
跟踪日志):以及
stderr
: