0

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

--isolation=cgroups/cpuすべての mesos エージェントをオプション(not )で起動すると、CPU リソースのみが分離 (=制限) されると思いました--isolation=cgroups/cpu,cgroups/mem

しかし、この場合でも、mesos docker containerizer によって起動されたすべての docker コンテナには--memoryオプションがあり、これはハード リミットであり、docker コンテナがより多くのメモリを必要とする場合に OOM キラーを引き起こします。(そして mesos docker containerizer はサポートしていないよう--memory-reservationです。)

問題2

の場合でも、Auroraインスタンスからまたはパラメータを--isolation=cgroups/cpu削除すると、次のエラーが発生します。ramdiskResource

構成の読み込みエラー: TypeCheck(FAILED): MesosJob[タスク] が失敗しました: タスク[リソース] が失敗しました: リソース[RAM] が必要です。

私の質問

  • メモリとディスクの分離を無効にすることはできますか?
  • --isolation=cgroups/cpuとはどう違い--isolation=cgroups/cpu,cgroups/memますか?
4

1 に答える 1