您的位置:首页 > 其它

marathon参考(1)应用基础

2016-04-02 17:16 363 查看
翻译https://mesosphere.github.io/marathon/docs/application-basics.html

在marathon中,应用是一个完整的概念。每个应用是一个典型的长运行的服务,这个服务有很多实例,并且是运行在多个主机上。

Hello Marathon:一个内嵌的shell脚步

让我们开始一个简单的例子:编写一个app,打印Hello Marathon到stdout,然后sleep 5秒,周而复始。你可以使用下面的应用定义文件(json格式)来描述应用:

{
"id": "basic-0",
"cmd": "while [ true ] ; do echo 'Hello Marathon' ; sleep 5 ; done",
"cpus": 0.1,
"mem": 10.0,
"instances": 1
}


注意:cmd是我们要执行的命令。它的值会以/bin/sh -c ${cmd}的方式执行。

mesos执行在它自己的沙箱环境执行所有的任务。这个沙箱在每个slave节点上是一个指定的目录,其中包含很多相关的日志文件。

在应用中使用资源

通常应用逗号依赖一些资源集。例如文件和压缩文件等。为了解决资源集的问题,marathon有uris的概念。它利用mesos抓取外部资源。

我们先看一个实例:

{
"id": "basic-1",
"cmd": "./cool-script.sh",
"cpus": 0.1,
"mem": 10.0,
"instances": 1,
"uris": [
"https://example.com/app/cool-script.sh"
]
}


在执行cmd之前,先下载https://example.com/app/cool-script.sh这个资源,并且在应用的任务沙箱中让它可用。进入mesos UI,点击进入这个应用运行mesos节点的沙箱,你应该可以找到cool-script.sh这个文件。

注意mesos v0.22及以上版本,默认是不能编译下载的可执行文件的,所以cmd应该修改为:
chmod u+x cool-script.sh && ./cool-script.sh


marathon也可以获取驻留在压缩包中的文件。marathon在执行cmd文件之前,执行解压压缩包的操作,支持压缩包给格式为:

.tgz
.tar.gz
.tbz2
.tar.bz2
.txz
.tar.xz
.zip


下面是压缩包的实例:

{
"id": "basic-2",
"cmd": "app/cool-script.sh",
"cpus": 0.1,
"mem": 10.0,
"instances": 1,
"uris": [
"https://example.com/app.zip"
]
}


marathon还可以下载git仓库或是cdn的资源,实例如下:

{
...
"uris": [
"https://git.example.com/repo-app.zip", "https://cdn.example.net/my-file.jpg", "https://cdn.example.net/my-other-file.css"
]
...
}


marathon还支持下载其他很多资源,支持URI的协议如下:

file:
http:
https:
ftp:
ftps:
hdfs:
s3:
s3a:
s3n:


一个简单的基于docker的应用

使用marathon我们可以运行docker镜像。

下面的实例中,我们注重看一个docker应用:一个使用python编写的web服务,它使用python:3镜像。容器内部,这个web服务运行在8080端口(这个端口号使用containerPort定义)。容器的外部,marathon分配任意个接口(hostPort设置为0)。

{
"id": "basic-3",
"cmd": "python3 -m http.server 8080",
"cpus": 0.5,
"mem": 32.0,
"container": {
"type": "DOCKER",
"docker": {
"image": "daocloud.io/library/python:3",
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 8080, "hostPort": 0 }
]
}
}
}


在这个例子里,我们将使用HTTP API部署basic-3应用。

curl -X POST http://10.141.141.10:8080/v2/apps -d @basic-3.json -H "Content-type: application/json"


我们可以在marathon ui界面查看随机分配的访问端口访问应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: