标记任务和作业

教程 - 使用 DC/OS Web 界面和 Marathon HTTP API 定义标签

IMPORTANT: Tutorials are intended to give you hands-on experience working with a limited set of DC/OS features with no implied or explicit warranty of any kind. None of the information provided--including sample scripts, commands, or applications--is officially supported by Mesosphere. You should not use this information in a production environment without independent testing and validation.

本教程说明如何使用 DC/OS Web 界面和 Marathon HTTP API 定义标签,以及如何根据标签值条件查询与正在运行的应用程序和作业有关的信息。

在 DC/OS 群集中部署应用程序、容器或作业时,可以将标记或标签与部署的组件相关联,以跟踪和报告这些组件对群集的使用情况。例如,您可能希望为 Mesos 应用程序分配成本中心标识符或客户编号,并在月末生成总结报告,其中包含使用情况度量标准,例如成本中心或客户分配给应用程序的 CPU 和内存量。

将标签分配给应用程序和任务

您可以从 DC/OS CLI 为任务附加标签。您可以指定多个标签,但每个标签只能有一个值。

DC/OS CLI

您还可以在应用定义的 labels 参数中指定标签值。

vi myapp.json

{
    "id": "myapp",
    “CPU”: 0.1,
    "mem": 16.0、
    "ports": [
        0
    ],
    "cmd": "/opt/mesosphere/bin/python3 -m http.server $PORT0",
    "instances": 2,
    "labels": {
        "COST_CENTER": “0001”
    }
}

然后,从 DC/OS CLI 部署:

dcos marathon app add <myapp>.json

将标签分配给作业

您可以通过 DC/OS Web 界面的 Jobs 选项卡或 DC/OS CLI 为作业附加标签。您可以指定多个标签,但每个标签只能有一个值。

DC/OS Web 界面

从 DC/OS Web 界面中单击 Jobs 选项卡,然后单击作业名称。这将带您进入单独的作业页面。单击右上角的 Edit。在“编辑作业”页面左侧,选择 Labels

作业标签

图 1. 分配工作标签

DC/OS CLI

您还可以在作业定义的 labels 参数中指定标签值。

vi myjob.json

 ```json
    {
      "id": "my-job",
      "description": "A job that sleeps",
      "labels": {
        "department": "marketing"
      },
      "run": {
        "cmd": "sleep 1000",
        "cpus": 0.01,
        "mem": 32,
        "disk": 0
      }
    }
 ```

然后,从 DC/OS CLI 部署:

dcos job add <myjob>.json

显示标签信息

部署并启动应用程序后,您可以通过 DC/OS UI 的 Services 选项卡按标签进行筛选。您还可以使用 DC/OS CLI 中的 Marathon HTTP API,根据标签值条件查询正在运行的应用程序。

您还可以使用 DC/OS CLI 中的 Marathon HTTP API,根据标签值条件查询正在运行的应用程序。

下面的代码片段显示了向 Marathon HTTP API 发出的 HTTP 请求。此示例中使用 curl 程序提交 HTTP GET 请求,但您可以使用任何能够发送 HTTP GET/PUT/DELETE 请求的程序。您可以看到 HTTP 端点是 https://52.88.210.228/marathon/v2/apps,以及随 HTTP 请求发送的参数包括标签条件 ?label=COST_CENTER==0001:

curl --insecure \
> https://52.88.210.228/marathon/v2/apps?label=COST_CENTER==0001 \
> | python -m json.tool | more

您还可以指定多个标签条件,如下所示:?label=COST_CENTER==0001,COST_CENTER==0002

在以上示例中,您收到的响应将仅包括具有定义值为 COST_CENTER0001. 的应用程序。还包括资源度量标准,例如 CPU 共享数和分配的内存量。在响应的底部,您可以看到部署此应用程序的日期/时间,可用于计算计费或退费目的的正常运行时间。