创建作业
BETA
使用 Web 界面、CLI 或 API 创建和管理作业
您可以在 DC/OS Web 界面、DC/OS CLI 中或通过 API 创建和管理作业。
DC/OS Web 界面
注意: DC/OS Web 界面提供 CLI 和 API 功能的子集。对于高级作业配置,使用 [dcos job](/mesosphere/dcos/cn/1.11/cli/command-reference/dcos-job/) 命令或 Jobs [API](#jobs-api)。
添加作业
从 DC/OS Web 界面中单击 Jobs 选项卡,然后单击 Create a Job 按钮。填写以下字段,或切换到 JSON 模式以直接编辑 JSON。
图 1. 新作业菜单
General 选项卡
- ID - 作业的 ID。
- Description - 作业描述。
- CPU - 作业所需的 CPU 量。
- Mem - 作业所需的内存大小,以 MB 为单位。
- Disk space - 作业所需的磁盘空间大小,以 MB 为单位。
- Command - 作业将执行的命令。如果您将使用 Docker 镜像,请将此留空。
Schedule 选项卡
检查 Run on a Schedule 以显示以下字段。
- Cron Schedule - 指定 cron 格式的时间表。使用 this crontab generator 寻求帮助。
- Time Zone - 以 [TZ 格式] 输入时区(http://www.timezoneconverter.com/cgi-bin/zonehelp),例如,美国/纽约。
- Starting Deadline - 如果由于某些原因错过了计划时间,这是开始作业的时间(以秒为单位)。错过的作业执行将被视为失败的作业执行。
Docker Container 选项卡
- Image - 如果您使用的是 Docker 镜像,请输入您将用于指定作业操作的 Docker 镜像。
Labels
Label Name 和 Label Value - 将元数据附加到您的作业,以便您可以筛选。了解有关标签的更多信息。
作业组
您可以将作业添加到现有的作业组,或在创建作业时创建一个组。在作业 ID 中使用点可将作业嵌套在一个组中。例如,如果您输入作业 ID marketing.myjob
,myjob
将在 marketing
组中创建。在 DC/OS Enterprise 中,您可以 使用工作组 实现细粒度用户访问。
修改、查看或删除作业
在 Jobs 选项卡中,单击作业名称,然后单击右上方的菜单修改或删除作业。当作业正在运行时,您可以单击作业实例深入查看 Details、Files 和 Logs 数据。
DC/OS CLI
您可以使用 dcos job
命令从 DC/OS CLI 中创建和管理作业。若要查看可用命令的完整列表,请运行 dcos job --help
。
添加作业
以 JSON 格式创建作业文件。
id
参数是作业 ID。您稍后将使用此 ID 管理作业。{
"id": "myjob",
"description": "A job that sleeps regularly",
"run": {
"cmd": "sleep 20000",
"cpus": 0.01,
"mem": 32,
"disk": 0
},
"schedules": [
{
"id": "sleep-schedule",
"enabled": true,
"cron": "20 0 * * *",
"concurrencyPolicy": "ALLOW"
}
]
}
注意: 您只能为作业分配一个计划。
添加作业:
dcos job add <myjob>.json
注意: 您可以为作业文件选择任何名称。
转到 DC/OS Web 界面的 Jobs 选项卡以验证是否已添加作业,或从 CLI 进行验证:
dcos job list
仅限计划的 JSON
如果对多项作业使用相同的计划,您可以为计划创建单独的 JSON 文件。使用 dcos job schedule add <job-id> <schedule-file>
命令将作业与计划关联。
{
"concurrencyPolicy": "ALLOW",
"cron": "20 0 * * *",
"enabled": true,
"id": "nightly",
"nextRunAt": "2016-07-26T00:20:00.000+0000",
"startingDeadlineSeconds": 900,
"timezone": "UTC"
}
删除作业
在 DC/OS CLI 上输入以下命令:
dcos job remove <job-id>
转到 DC/OS Web 界面的 Jobs 选项卡以验证是否已删除作业,或从 CLI 进行验证:
dcos job list
修改作业
若要修改作业。请更新 JSON 作业文件,然后运行
dcos job update <job-file>.json
修改作业的计划
您可以通过两种方式更新作业计划,具体取决于作业是否在 <job-file>.json
中具有指定的计划或作业计划是否保存在单独的文件中。
使用计划修改作业
修改您的 .json
的schedules
参数。然后运行
dcos job update <job-file>.json
使用单独的计划文件修改作业
修改 <schedule-file>.json
。然后运行以下命令之一:
dcos job schedule add <job-id> <schedule-file>.json
dcos job schedule remove <job-id> <schedule-id>
dcos job schedule update <job-id> <schedule-file>.json
查看作业详细信息
列出所有作业:
dcos job list
列出作业之前所有的运行:
dcos job history <job-id>
若要查看有关作业的详细信息,请运行:
dcos job show <job-id>
若要查看有关作业计划的详细信息,请运行:
dcos job schedule show <job-id>
查看作业日志
若要查看作业日志:
dcos task log --completed <job-id>
若要仅获取一个特定作业的日志,请使用‘dcos job history’中的作业运行 ID `
dcos task log --completed <job-run-id>
Jobs API
您还可以通过 API 创建和管理作业。在此查看完整的 API。
注意: DC/OS CLI 和 Web 界面支持组合 JSON 格式(通过 `/v0` 终端访问),允许您在作业描述符中指定计划。若要通过 API 计划作业,请使用两个调用:一个添加未计划的作业,另一个用于将.json 与作业关联。
添加作业
以下命令将添加名为 myjob.json
的作业。
curl -X POST -H "Content-Type: application/json" -H "Authorization: token=$(dcos config show core.dcos_acs_token)" $(dcos config show core.dcos_url)/service/metronome/v1/jobs -d@/Users/<your-username>/<myjob>.json
删除作业
无论作业是否运行,以下命令将删除作业:
curl -X DELETE -H "Authorization: token=$(dcos config show core.dcos_acs_token)" $(dcos config show core.dcos_url)/service/metronome/v1/jobs/<myjob>?stopCurrentJobRuns=true
若要只在作业不在运行时删除作业,请将 stopCurrentJobRuns
设置为 False
。
修改或查看作业
以下命令显示所有作业:
curl -H "Authorization: token=$(dcos config show core.dcos_acs_token)" $(dcos config show core.dcos_url)/service/metronome/v1/jobs
以下命令列出作业运行:
curl -H "Authorization: token=$(dcos config show core.dcos_acs_token)" "$(dcos config show core.dcos_url)/service/metronome/v1/jobs/<myjob>/runs/"
使用以下命令停止运行:
curl -X POST -H "Authorization: token=$(dcos config show core.dcos_acs_token)" "$(dcos config show core.dcos_url)/service/metronome/v1/jobs/<myjob>/runs/20160725212507ghwfZ/actions/stop"
为作业添加计划
以下命令为作业添加计划:
curl -X POST -H "Content-Type: application/json" -H "Authorization: token=$(dcos config show core.dcos_acs_token)" $(dcos config show core.dcos_url)/service/metronome/v1/jobs/<job-id>/schedules -d@/Users/<your-username>/<schedule-file>.json