chronos中docker的自定义mesos执行器

tcomlyy6  于 2021-06-21  发布在  Mesos
关注(0)|答案(3)|浏览(352)

我正在尝试配置chronos使用自定义mesos docker执行器目前https://github.com/mesosphere/mesos-docker/ . 每次我试着运行命令都失败了。
我使用下面的命令创建了任务

echo '{"schedule":"R/2014-02-14T00:52:00Z/PT90M", "name":"testing_docker_executor", "command":"docker_ubuntu_test /root/docker_test.sh", "epsilon":"PT15M", "executor":"/var/lib/mesos/executors/docker" }' | http POST localhost:8080/scheduler/iso8601

我还配置了登录executor,下面是失败时得到的日志

Feb 11 13:51:36 ip6-localhost docker[13895]: Ready to serve!
Feb 11 13:51:36 ip6-localhost docker[13895]: Registered with Mesos slave
Feb 11 13:51:36 ip6-localhost docker[13895]: Task is: ct:1392126755612:2:testing_docker_executor
Feb 11 13:51:36 ip6-localhost docker[13895]: JSON from framework is rubbish
Feb 11 13:51:36 ip6-localhost docker[13895]: No JSON object could be decoded
Feb 11 13:51:36 ip6-localhost docker[13895]: Traceback (most recent call last):
Feb 11 13:51:36 ip6-localhost docker[13895]:   File "/var/lib/mesos/executors/docker", line 120, in launchTask
Feb 11 13:51:36 ip6-localhost docker[13895]:     self.data = json.loads(task.data) if task.data else {}
Feb 11 13:51:36 ip6-localhost docker[13895]:   File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
Feb 11 13:51:36 ip6-localhost docker[13895]:     return _default_decoder.decode(s)
Feb 11 13:51:36 ip6-localhost docker[13895]:   File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
Feb 11 13:51:36 ip6-localhost docker[13895]:     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
Feb 11 13:51:36 ip6-localhost docker[13895]:   File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
Feb 11 13:51:36 ip6-localhost docker[13895]:     raise ValueError("No JSON object could be decoded")
Feb 11 13:51:36 ip6-localhost docker[13895]: ValueError: No JSON object could be decoded
Feb 11 13:51:36 ip6-localhost docker[13895]: []
Feb 11 13:51:36 ip6-localhost docker[13895]: Traceback (most recent call last):
Feb 11 13:51:36 ip6-localhost docker[13895]:   File "/var/lib/mesos/executors/docker", line 67, in run
Feb 11 13:51:36 ip6-localhost docker[13895]:     img  = self.args[0]
Feb 11 13:51:36 ip6-localhost docker[13895]: IndexError: list index out of range

有什么我不知道的吗。我需要在命令中提供json吗。

h9a6wy2h

h9a6wy2h1#

你需要提供一个 Docker image 让mesos在json中运行。应该更像这样。

{ 
    "schedule" : "R5/2014-11-12T05:31:00.000Z/PT10S",  
    "epsilon" : "PT10M",  
    "name" : "ECHO_DATE_DOCKER",
    "container": {
    "type": "DOCKER",
    "image": "libmesos/ubuntu"
    },
    "cpus": "0.5",
    "mem": "256",   
    "command" : "date >> /tmp/ECHO_DATE_01",  
    "owner" : "chronos-user@example.com",  
    "async" : false 
}

这里有更多的例子

wqnecbli

wqnecbli2#

我已经通过@solidsnack派生并定制了mesos docker脚本。可以在https://github.com/mudasirmirza/chronos-docker
这个脚本在没有马拉松的mesos和chronos中运行得非常好。
自述文件中提供了用法和示例。

idv4meu8

idv4meu83#

报告中似乎提供了数据 TaskInfo 但我不知道这是从哪里来的。docker执行器希望,如果提供了数据,那么它是由marathon提供的,应该是json。显然还有别的东西在里面。
关于第二个错误—— list index out of range --这表明 docker_ubuntu_test /root/docker_test.sh 没有传递给docker执行器。这确实很奇怪。

相关问题