如何禁用apachemesos内存/磁盘隔离?

tzdcorbm  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(364)

我正在用docker容器检查apacheaurora(1.1.0)(0.16.0)和apachemesos(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'},
        ],
    ),
)

但是,既然 disk 以及 ram 极限困扰着我,我想让两者都残废。

问题1

我认为如果我的所有mesos代理都使用这个选项启动,那么只有cpu资源会被隔离(=有限) --isolation=cgroups/cpu (不是 --isolation=cgroups/cpu,cgroups/mem ).
但即使在这种情况下,所有由mesos docker集装箱船推出的docker集装箱船都有 --memory 选项,这是硬限制,如果docker容器需要更多内存,则会导致oom killer(看来mesos docker集装箱船不支持 --memory-reservation .)

问题2

即使是在 --isolation=cgroups/cpu ,正在删除 ram 或者 disk 极光参数 Resource 示例导致以下错误。
加载配置时出错:typecheck(失败):mesosjob[task]失败:task[resources]失败:需要资源[ram]。

我的问题

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

41ik7eoe

41ik7eoe1#

正如您所发现的,您可以通过不将内存和磁盘隔离器指定为隔离代理标志的一部分来禁用mesos中的内存和磁盘隔离器。我不确定docker集装箱船在这种情况下的行为,但您可能希望尝试改用mesos集装箱船,因为这是在mesos中运行docker映像的首选方法。
至于省略 Resources 从你的极光配置去,不幸的是,这将是不可能的。每个aurora作业都必须指定其资源需求,以便调度器能够将您的任务示例与mesos提供的服务相匹配。

相关问题