从本机可执行本地文件

时间:2017-01-27 16:24:05

标签: mesos marathon dcos

我正在尝试使用DC / OS我想尝试使用本机文件运行功能,在不使用docker的情况下运行本机可执行文件,概述于https://dcos.io/docs/1.8/usage/tutorials/dcos-101/app2/

我可以成功地遵循教程,但我想使用我自己的应用程序(一个自包含的可执行文件),在线文档说除了https:// uri之外,fetch命令还支持file:// uri和别的。 (https://mesosphere.github.io/marathon/docs/application-basics.html

因此,如果我使用教程中的app部署清单作为我的基础,但我已将我的可执行文件上传到我的主节点/ home / core / app(在linux文件系统中) 并将uri更改为" file:/// home / core / app"部署说

  

I0127 14:42:06.533756 40159 fetcher.cpp:167]使用命令复制资源: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 /运行/ f266a00c-1179-48bb-9f1e-251f3eae1272 /应用'   cp:不能统计' / home / core / app':没有这样的文件或目录"

使用CoreOS上安装的DC / OS 1.8与一个主代理和一个代理(仅用于开发测试)

我确定我只是遗漏了像mesos文件系统这样的基本内容,但是我到处寻找一个教程,他们要么假设你使用的是docker,要么是通过http服务......没有对于file://

所以在使用文件的时候:// uri是一个与linux文件系统不同的位置,或者我错过了其他的东西。

对于DC / OS newb

,请帮忙

由于

修改

这是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 个答案:

答案 0 :(得分:0)

除非您的代理节点的每个上存在/home/core/app,或者您将其更改为外部HTTP URL,否则无效。 fetch的作用是:它将列出的文件下载到Mesos沙箱中,具体取决于使用的URI架构。由于您使用的是file:模式,因此Mesos会尝试在启动任务的代理(而不是主服务器)上下载它。