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'},
],
),
)
ただ、指定disk
とram
制限が気になるので両方無効にしたい。
問題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
削除すると、次のエラーが発生します。ram
disk
Resource
構成の読み込みエラー: TypeCheck(FAILED): MesosJob[タスク] が失敗しました: タスク[リソース] が失敗しました: リソース[RAM] が必要です。
私の質問
- メモリとディスクの分離を無効にすることはできますか?
--isolation=cgroups/cpu
とはどう違い--isolation=cgroups/cpu,cgroups/mem
ますか?