如何禁用Apache Mesos内存/磁盘隔离



我正在检查Apache Aurora (1.1.0)(0.16.0)和Apache Mesos (0.16.0)(0.16.0)(1.1.0)带有Docker容器。这是一个示例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)。

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

问题2

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

错误加载配置:typecheck(失败):Mesosjob [task]失败:任务[资源]失败:资源[RAM]是必需的。

我的问题

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

正如您发现的那样,可以通过不将其指定为隔离代理标志的一部分来禁用中内存和磁盘隔离器。在这种情况下,我不确定Docker容器器的行为,但是您可能想尝试使用Mesos容器器,因为这是在Mesos中运行Docker Image的首选方法。

就您的Aurora配置省略Resources而言,不幸的是,这是不可能的。每个Aurora作业都必须指定其资源要求,以便调度程序可以将您的任务实例与Mesos的要约匹配。

最新更新