作业示例

ENTERPRISE

BETA

作业常见使用情景示例。

这些示例为作业提供常见的使用情景。

先决条件:

创建简单的作业

此 JSON 文件创建了一项没有计划的简单作业。

  1. 使用以下内容创建 JSON 文件。

    1. {
    2. "id": "my-job",
    3. "description": "A job that sleeps",
    4. "run": {
    5. "cmd": "sleep 1000",
    6. "cpus": 0.01,
    7. "mem": 32,
    8. "disk": 0
    9. }
    10. }
  2. 从 DC/OS CLI 中添加作业。

    1. dcos job add <my-job>.json

或者,使用 API 添加作业。 bash 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

创建有计划的作业

注意: 此示例 JSON 仅在您从 DC/OS CLI 或 Web 界面添加作业时有效。使用 [以下示例](#schedule-with-api) 通过 API 创建有计划的作业。

  1. 使用以下内容创建 JSON 文件。

    1. {
    2. "id": "my-scheduled-job",
    3. "description": "A job that sleeps on a schedule",
    4. "run": {
    5. "cmd": "sleep 20000",
    6. "cpus": 0.01,
    7. "mem": 32,
    8. "disk": 0
    9. },
    10. "schedules": [
    11. {
    12. "id": "sleep-nightly",
    13. "enabled": true,
    14. "cron": "20 0 * * *",
    15. "concurrencyPolicy": "ALLOW"
    16. }
    17. ]
    18. }
  2. 添加作业。

    1. dcos job add <my-scheduled-job>.json

使用 API 创建作业并关联计划

  1. 使用 上述说明 添加没有计划的作业。

  2. 使用以下内容创建 JSON 文件。这是您作业的时间表。

    1. {
    2. "concurrencyPolicy": "ALLOW",
    3. "cron": "20 0 * * *",
    4. "enabled": true,
    5. "id": "nightly",
    6. "nextRunAt": "2016-07-26T00:20:00.000+0000",
    7. "startingDeadlineSeconds": 900,
    8. "timezone": "UTC"
    9. }
  3. 添加计划并将其与作业关联。通过 DC/OS CLI:

    1. dcos job schedule add <job-id> <schedule-file>.json

    通过 API

    1. 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

注意: 您可以将计划与多项作业相关联。

创建分区作业环境

在此示例中,使用了 DC/OS Web 界面创建分区作业环境。这让您限制每项作业或每个作业组的用户访问。作业是在名为 batch 的作业组中创建的,该作业组是名为 dev 作业组的子级。

  1. ├── dev
  2. ├── batch
  3. ├── job1
  4. ├── job2

然后作业组为用户 CoryAlice 分配权限以限制访问的权限。

先决条件:

  • 安装 DC/OS 时,安全模式 permissivestrict
  • 您必须以 superuser 身份登录。
  1. 以具有 superuser 权限的用户身份登录 DC/OS Web 界面。

    登录

    图 1. DC/OS Enterprise 登录

  2. 创建分区作业。

  3. 选择 Jobs,然后单击 CREATE A JOB

  4. ID 字段中,键入 dev.batch.job1

  5. Command 字段中,键入 sleep 1000(或其他有效的 shell 命令)并单击 CREATE A JOB

    创建作业

    图 2. 新作业屏幕

    这将在 DC/OS 中的这样的目录结构中创建作业:Jobs > dev > batch > job1

  6. 单击右上角的 + 图标创建另一项作业。

    创建另一项作业

    图 3. 创建另一项作业

  7. ID 字段中,键入 dev.batch.job2

  8. Command 字段中,键入 sleep 1000(或其他有效的 shell 命令)并单击 CREATE A JOB。您应该有两项作业:

    创建作业

    图 4. Jobs > dev > batch screen

  9. 运行作业。

  10. 单击 Jobs > dev > batch > job1,然后单击 Run Now

    运行作业

    图 5. “Run now”菜单

  11. 单击 Jobs > dev > batch > job2,然后单击 Run Now

  12. 为作业分配权限。

  13. 选择 Organization > Users 并创建名为 CoryAlice 的新用户。

    创建用户 Cory

    图 6. 创建新用户

  14. 选择用户 Cory 授予 job1 访问权限。

  15. Permissions 选项卡中,单击 ADD PERMISSION,然后切换 INSERT PERMISSION STRING 按钮以手动输入权限。

    添加 cory 权限

    图 7. 为用户“Cory”添加权限

  16. Permissions Strings 字段中复制并粘贴权限。指定您的作业组 (dev/batch)、作业名称 (job1) 和操作 (read)。操作可以是 createreadupdatedeletefull。若要允许多个操作,请使用逗号分隔它们,例如: dcos:service:metronome:metronome:jobs:/dev/batch/job1 read,update

    重要信息:您的安全模式必须是宽容或严格。

    1. dcos:adminrouter:service:metronome full
    2. dcos:service:metronome:metronome:jobs:dev/batch/job1 read
    3. dcos:adminrouter:ops:mesos full
    4. dcos:adminrouter:ops:slave full
    5. dcos:mesos:master:framework:role:* read
    6. dcos:mesos:master:executor:app_id:/dev/batch/job1 read
    7. dcos:mesos:master:task:app_id:/dev/batch/job1 read
    8. dcos:mesos:agent:framework:role:* read
    9. dcos:mesos:agent:executor:app_id:/dev/batch/job1 read
    10. dcos:mesos:agent:task:app_id:/dev/batch/job1 read
    11. dcos:mesos:agent:sandbox:app_id:/dev/batch/job1 read
  17. 单击 ADD PERMISSIONS,然后单击 Close

  18. 对用户 Alice 重复这些步骤 ,在权限中,将 job1 替换为 job2

  19. 退出并以新用户身份重新登录以验证权限。用户现在应该在 Jobs 选项卡内具有对 dev/batch/job1dev/batch/job2 的指定访问级别。例如,如果您以 Alice 身份登录,您只能看到 jobs2

    Alice 作业查看

    图 8. “Alice”的局限性查看