我正在试用dc/os,我想尝试一下本机文件运行功能,在不使用docker的情况下运行本机可执行文件https://dcos.io/docs/1.8/usage/tutorials/dcos-101/app2/
我可以成功地学习教程,但是我想使用我自己的应用程序(一个自包含的可执行文件),在线文档说fetch命令除了支持https://uri和其他文件外,还支持file://uri(https://mesosphere.github.io/marathon/docs/application-basics.html)
因此,如果我使用教程中的应用程序部署清单作为基础,但我已将可执行文件上载到位于/home/core/app的主节点(在linux文件系统中),并将uri更改为“file:///home/core/app”,部署说明
i0127 14:42:06.533756 40159取数器。cpp:167]正在复制资源command:cp '/home/core/app'/var/lib/mesos/slave/slaves/a0ff5689-5816-4812-864b-b3c4b914a272-s0/frameworks/a0ff5689-5816-4812-864b-b3c4b914a272-0000/executors/dcos-101_app2.c641de8d-e49e-11e6-93c4-de7054394bed/runs/f2666a00c-1179-48bb-9f1e-251f3eae1272/app'cp:cannot stat“/home/core/app”:没有这样的文件或目录
使用安装在coreos上的dc/os 1.8,并带有一个主机和一个代理(仅用于开发测试)
我确信我只是缺少了一些基本的东西,比如mesos文件系统,但是我到处都找了一个教程,他们要么假设你使用docker,要么通过http提供服务…没有文件://
因此,当使用文件//uri时,它的位置是否与linux文件系统不同,或者我是否遗漏了其他内容。
对于dc/os新手,请提供一些帮助
谢谢
编辑
这是app.json文件
{
"id": "/dcos-101/app2",
"cmd": "chmod u+x app && ./app",
"args": null,
"user": null,
"env": null,
"instances": 1,
"cpus": 1,
"mem": 128,
"disk": 0,
"gpus": 0,
"executor": null,
"constraints": null,
"fetch": [
{
"uri": "file:///home/core/app"
}
],
"storeUrls": null,
"backoffSeconds": 1,
"backoffFactor": 1.15,
"maxLaunchDelaySeconds": 3600,
"container": null,
"healthChecks": null,
"readinessChecks": null,
"dependencies": null,
"upgradeStrategy": {
"minimumHealthCapacity": 1,
"maximumOverCapacity": 1
},
"acceptedResourceRoles": null,
"ipAddress": null,
"residency": null,
"secrets": null,
"taskKillGracePeriodSeconds": null,
"portDefinitions": [
{
"protocol": "tcp",
"port": 10000,
"labels": {
"VIP_0": "/dcos-101/app2:10000"
}
}
],
"labels": {
"HAPROXY_GROUP": "external"
},
"requirePorts": false
}
1条答案
按热度按时间balp4ylt1#
那是行不通的,除非
/home/core/app
存在于每个代理节点上,或者您将其更改为(例如)外部http url。什么fetch
does是:它将列出的文件下载到mesos沙盒中,具体取决于使用的uri模式。既然你用的是file:
在schema中,mesos尝试在启动任务的代理(而不是主代理)上下载它。