2016-05-08 7 views
2

Хотя с помощью следующей команды:как создать объем сохраняемости с помощью Mesos DCOS и марафон

$ dcos marathon app add example.json 

Я получаю выходного Error: Object is not valid

example.json

{ 
"id": "es-cluster", 
"env": { 
    "MARATHON_URL": "http://127.0.0.1:8080", 
    "APP_ID": "es-cluster", 
    "ELASTICSEARCH_CLUSTER_NAME": "CLUSTERNAME" 
}, 
"container": { 
    "type": "DOCKER", 
    "volumes": [ 
     { 
      "containerPath": "data", 
      "mode": "RW", 
      "persistent": { 
       "size": 1000 
      } 
     } 
    ], 
    "docker": { 
     "image": "some/dockerImage", 
     "network": "BRIDGE", 
     "portMappings": [{ 
      "containerPort": 9200 
     }, { 
      "containerPort": 9300 
     }] 
    } 
}, 
"cpus": 0.5, 
"mem": 1024, 
"instances": 2 
} 

Если удалить блок объема (или сохранить его пустым), он отлично работает.

Также работает с блоком громкости непосредственно с марафоном, работает отлично.

Как создать приложение с постоянным томом с помощью DCOS?

+0

Думаю, нам нужна дополнительная информация здесь. Спецификация приложения Marathon действительна, я проверил это. Вы говорите, что это работает «напрямую с марафоном», которое я интерпретирую как: через марафонский интерфейс? Если это так, вы можете попробовать следующее: в правом верхнем углу диалогового окна «Новое приложение» вы увидите переключатель «JSON Mode». Введите свои данные, переключитесь на JSON и сохраните результат в 'example.json' и сообщите нам, что вы видите. –

+0

можно найти здесь: http://s000.tinyupload.com/index.php?file_id=51648903778285053855 Опять же, это работает с марафоном, но DCOS все еще бросает: «Ошибка: объект недействителен» – barznik

ответ

3

Получил его на работу.

попытался отправить в example.json с помощью Marathon API http://marathon-ip:8080/v2/apps и получил следующее сообщение:

{"message":"Object is not valid","details":[{"path":"/value/upgradeStrategy","errors":["got 1.0, expected 0.5 or less","got 1.0, expected 0.0"]},{"path":"/value/isResident","errors":["must be false"]}]}

Затем я создал приложение (с объемом), используя пользовательский интерфейс Marathon и скопирован в JSON для справки. Я заметил, что марафон добавляет этот блок:

"upgradeStrategy": { 
    "minimumHealthCapacity": 0.5, 
    "maximumOverCapacity": 0 
    } 

после добавления этого блока к моей первоначальной example.json (отправил в вопросе) он работал.