马拉松不会发射docker集装箱

u59ebvdq  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(485)

我有一个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)
所以我认为我们比以前走得更远了,但是我们仍然有一些港口问题。我不知道为什么容器会成功地建立自己和马拉松没有端口设置,但没有马拉松与端口设置

pcrecxhr

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 模式可能会与主机上已使用的端口发生冲突。这将允许Map slave:32001 -> docker:8080 .

...
"network": "BRIDGE",
"portMappings": [
  {
    "containerPort": 8080,
    "hostPort": $PORT0,
    "protocol": "tcp"
  }
],
...

当任务在marathon中启动时,您将看到如下应用程序id myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf . 使用mesos cli( pip install mesos.cli mesos.interface )去拿木头。有一个类似于unix的命令 tail 用于获取 stdout 日志( -f 跟踪日志):

mesos tail -f -i myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf

以及 stderr :

mesos tail -f -i myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf stderr
``` `-i` 允许您从非活动任务获取日志(以防任务快速崩溃)。如果你在马拉松比赛中没有抓到身份证,就用 `mesos ps -i` .
如果任务没有启动,则可能是资源不足或马拉松有问题。将浏览器导航到 `http://{marathon URI:8080]/logging` 增加任务分配的详细性。然后检查马拉松记录。

相关问题