Как отключить изоляцию памяти/диска apache mesos?

Я проверяю 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'},
        ],
    ),
)

Но, поскольку указание ограничений disk и ram меня беспокоит, я хочу отключить оба.

проблема 1

Я думал, что только ресурс ЦП будет изолирован (= ограничен), если все мои агенты mesos запускаются с параметром --isolation=cgroups/cpu (не --isolation=cgroups/cpu,cgroups/mem).

Но даже в этом случае все док-контейнеры, запускаемые mesos docker containerizer, имеют параметр --memory, который является жестким ограничением и вызывает OOM killer, если док-контейнеру требуется больше памяти. (И кажется, контейнерный контейнер mesos docker не поддерживает --memory-reservation.)

проблема 2

Даже в случае --isolation=cgroups/cpu удаление параметра ram или disk из экземпляра Aurora Resource вызывает следующую ошибку.

Ошибка при загрузке конфигурации: TypeCheck (FAILED): MesosJob [задача] не удалась: Задача [ресурсы] не удалась: требуются ресурсы [RAM].

Мой вопрос

  • Можно ли отключить изоляцию памяти и диска?
  • В чем разница между --isolation=cgroups/cpu и --isolation=cgroups/cpu,cgroups/mem?

person takaomag    schedule 25.11.2016    source источник
comment
Почему вы используете такую ​​устаревшую версию Mesos? 1.0.1 — текущая версия   -  person Tobi    schedule 26.11.2016
comment
Я подозреваю, что версии Mesos и Aurora перевернуты. 0.16.0 — это последняя версия Aurora, а Mesos 1.1.0 был выпущен несколько недель назад.   -  person Joshua Cohen    schedule 26.11.2016
comment
Я ошибся, Apache Aurora (1.1.0) and Apache Mesos (0.16.0) --› Apache Aurora (0.16.0) and Apache Mesos (1.1.0). Оба являются последними версиями выпуска.   -  person takaomag    schedule 28.11.2016


Ответы (1)


Как вы узнали, вы можете отключить изоляторы памяти и дисков в Mesos, не указав их как часть флага агента изоляции. Я не уверен в поведении Docker Containerizer в этом сценарии, но вы можете попробовать использовать файл Mesos Containerizer, так как это предпочтительный способ запуска образов Docker в Mesos в будущем.

Что касается исключения Resources из конфигурации Aurora, к сожалению, это невозможно. Каждое задание Aurora должно указывать свои требования к ресурсам, чтобы планировщик мог сопоставить экземпляры ваших заданий с предложением от Mesos.

person Joshua Cohen    schedule 26.11.2016
comment
Спасибо Джошуа! Попробую контейнерайзер Mesos. Если это все еще не помогает, мне, возможно, придется заменить --memory на --memory-reservation в строке github.com/apache/mesos/blob/master/src/docker/docker.cpp#L530 - person takaomag; 28.11.2016