【问题标题】:How to disable apache mesos memory/disk isolation?如何禁用 apache mesos 内存/磁盘隔离?
【发布时间】:2016-11-25 07:48:31
【问题描述】:

我正在使用 docker 容器检查 Apache Aurora (1.1.0)(0.16.0) 和 Apache Mesos (0.16.0) (1.1.0)。这是一个示例 Aurora 作业定义,

process_nginx = Process(
    name='nginx',
    cmdline=textwrap.dedent(r'''
        exec /path_to/nginx -g "daemon off; pid /run/nginx.pid; error_log stderr notice;"
    '''),
    min_duration=3,
    daemon=True,
)

task_nginx = Task(
    name='nginx',
    processes=[process_nginx,],
    resources=Resources(
        cpu=0.1,
        ram=20*MB,
        disk=50*MB,
    ),
    finalization_wait=14,
)

job_nginx = Job(
    cluster='x',
    role='root',
    name='nginx',
    instances=6,
    service=True,
    task=task_nginx,
    priority=1,
    #tier='preferred',
    constraints={
        'X_HOST_MACHINE_ID': 'limit:2',
        'HOST_TYPE.FRONTEND': 'true',
    },
    update_config=UpdateConfig(
        batch_size=1,
        watch_secs=29,
        rollback_on_failure=True,
    ),
    container=Docker(
        image='my_nginx_docker_image_name',
        parameters=[
            {'name': 'network', 'value': 'host'},
            {'name': 'log-driver', 'value': 'journald'},
            {'name': 'log-opt', 'value': 'tag=nginx'},
            {'name': 'oom-score-adj', 'value': '-500'},
            {'name': 'memory-swappiness', 'value': '1'},
        ],
    ),
)

但是,由于指定 diskram 限制困扰着我,我想禁用两者。

问题 1

如果我的所有 mesos 代理都使用选项 --isolation=cgroups/cpu(不是 --isolation=cgroups/cpu,cgroups/mem)启动,我认为只有 CPU 资源会被隔离(=有限)。

但即使在这种情况下,mesos docker containerizer 启动的所有 docker 容器都有--memory 选项,这是硬限制,如果 docker 容器需要更多内存,则会导致 OOM 杀手。 (而且似乎 mesos docker containerizer 不支持--memory-reservation。)

问题 2

即使是--isolation=cgroups/cpu,从Aurora Resource 实例中删除ramdisk 参数也会导致以下错误。

加载配置时出错:TypeCheck(FAILED): MesosJob[task] failed: Task[resources] failed: Resources[ram] is required。

我的问题

  • 是否可以禁用内存和磁盘隔离?
  • --isolation=cgroups/cpu--isolation=cgroups/cpu,cgroups/mem 有什么区别?

【问题讨论】:

  • 为什么要使用这么过时的 Mesos 版本? 1.0.1是当前版本
  • 我怀疑 Mesos 和 Aurora 版本是相反的。 0.16.0 是 Aurora 的最新版本,而 Mesos 1.1.0 是几周前发布的。
  • 我错了,Apache Aurora (1.1.0) and Apache Mesos (0.16.0) --> Apache Aurora (0.16.0) and Apache Mesos (1.1.0)。两者都是最新版本。

标签: mesos apache-aurora


【解决方案1】:

正如您所发现的,您可以禁用 Mesos 中的内存和磁盘隔离器,方法是不将它们指定为隔离代理标志的一部分。我不确定 Docker Containerizer 在这种情况下的行为,但您可能想尝试使用 Mesos Containerizer,因为这是在 Mesos 中运行 Docker 映像的首选方式。

至于从您的 Aurora 配置中省略 Resources,很遗憾,这是不可能的。每个 Aurora 作业都必须指定其资源需求,以便调度程序可以将您的任务实例与 Mesos 的报价相匹配。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 2015-08-11
  • 2014-06-10
  • 2012-05-13
相关资源
最近更新 更多