如何禁用 apache mesos memory/disk 隔离?
How to disable apache mesos memory/disk isolation?
我正在检查 Apache Aurora (1.1.0)(0.16.0) 和 Apache Mesos (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'},
],
),
)
但是,由于指定 disk
和 ram
限制困扰着我,我想将两者都禁用。
问题 1
我认为如果我的所有 mesos 代理都使用选项 --isolation=cgroups/cpu
(不是 --isolation=cgroups/cpu,cgroups/mem
)启动,那么只有 CPU 资源会被隔离(=有限)。
但即使在这种情况下,mesos docker containerizer 启动的所有 docker 容器都有 --memory
选项,这是硬限制,如果 docker容器需要更多内存。 (而且 mesos docker containerizer 似乎不支持 --memory-reservation
。)
问题 2
即使在 --isolation=cgroups/cpu
的情况下,从 Aurora Resource
实例中删除 ram
或 disk
参数也会导致以下错误。
Error loading configuration: TypeCheck(FAILED): MesosJob[task] failed: Task[resources] failed: Resources[ram] is required.
我的问题
- 是否可以禁用内存和磁盘隔离?
--isolation=cgroups/cpu
和--isolation=cgroups/cpu,cgroups/mem
有什么区别?
如您所见,您可以禁用 Mesos 中的内存和磁盘隔离器,方法是不将它们指定为隔离代理标志的一部分。我不确定 Docker Containerizer 在这种情况下的行为,但您可能想尝试使用 Mesos Containerizer,因为这是 运行 [=16= 的首选方式] Mesos 中的图像向前发展。
就从您的 Aurora 配置中省略 Resources
而言,不幸的是,这是不可能的。每个 Aurora 作业都必须指定其资源要求,以便调度程序可以将您的任务实例与 Mesos 提供的资源相匹配。
我正在检查 Apache Aurora (1.1.0)(0.16.0) 和 Apache Mesos (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'},
],
),
)
但是,由于指定 disk
和 ram
限制困扰着我,我想将两者都禁用。
问题 1
我认为如果我的所有 mesos 代理都使用选项 --isolation=cgroups/cpu
(不是 --isolation=cgroups/cpu,cgroups/mem
)启动,那么只有 CPU 资源会被隔离(=有限)。
但即使在这种情况下,mesos docker containerizer 启动的所有 docker 容器都有 --memory
选项,这是硬限制,如果 docker容器需要更多内存。 (而且 mesos docker containerizer 似乎不支持 --memory-reservation
。)
问题 2
即使在 --isolation=cgroups/cpu
的情况下,从 Aurora Resource
实例中删除 ram
或 disk
参数也会导致以下错误。
Error loading configuration: TypeCheck(FAILED): MesosJob[task] failed: Task[resources] failed: Resources[ram] is required.
我的问题
- 是否可以禁用内存和磁盘隔离?
--isolation=cgroups/cpu
和--isolation=cgroups/cpu,cgroups/mem
有什么区别?
如您所见,您可以禁用 Mesos 中的内存和磁盘隔离器,方法是不将它们指定为隔离代理标志的一部分。我不确定 Docker Containerizer 在这种情况下的行为,但您可能想尝试使用 Mesos Containerizer,因为这是 运行 [=16= 的首选方式] Mesos 中的图像向前发展。
就从您的 Aurora 配置中省略 Resources
而言,不幸的是,这是不可能的。每个 Aurora 作业都必须指定其资源要求,以便调度程序可以将您的任务实例与 Mesos 提供的资源相匹配。