2016-10-18 3 views
2

Проблема может быть вызвана Mesos и Marathon out of sync, но решение, упомянутое в GitHub, не работает для меня.Как удалить осиротевшие задачи в Apache Mesos?

Когда я нашел осиротевшие задачи:

enter image description here

Что я делаю:

  1. рестарт Marathon

  2. Marathon не синхронизируется осиротевшие задачи, но начать новые задачи ,

  3. Осиротые задачи по-прежнему занимают ресурсы, поэтому я должен их удалить.

  4. найти все осиротевшие задачи в рамках структуры ef169d8a-24fc-41d1-8b0d-c67718937a48-0000,

    curl -XGET `http://c196:5050/master/frameworks 
    

    показывает, что структура является unregistered_frameworks:

    { 
        "frameworks": [ 
         ..... 
        ], 
        "completed_frameworks": [ ], 
        "unregistered_frameworks": [ 
         "ef169d8a-24fc-41d1-8b0d-c67718937a48-0000", 
         "ef169d8a-24fc-41d1-8b0d-c67718937a48-0000", 
         "ef169d8a-24fc-41d1-8b0d-c67718937a48-0000" 
        ] 
    } 
    
  5. Попробуйте удалить рамки по рамочным ID (так что задачи в рамках структуры будет также следует удалить)

    curl -XPOST http://c196:5050/master/teardown -d 'frameworkId=ef169d8a-24fc-41d1-8b0d-c67718937a48-0000' 
    

    но получить No framework found with specified ID

Итак, как удалить осиротевшие задачи?

ответ

1

Есть два варианта

  1. Регистрация рамочные с таким же идентификатором рамочным. Выполните примирение и убейте все задания, которые вы получаете. Например, вы можете сделать это в следующем порядке

    • Скачать код мастер git clone https://github.com/janisz/mesos-cookbook.git
    • Изменить реж cd mesos-cookbook/4_understanding_frameworks
    • В scheduler.go изменения для URL
    • Если вы хотите, чтобы имитировать некоторые другие рамки создают /tmp/framework.json и заполнить его FrameworkInfo данные:

      { 
          "id": "<mesos-framewokr-id>", 
          "user": "<framework-user>", 
          "name": "<framework-name>", 
          "failover_timeout": 3600, 
          "checkpoint": true, 
          "hostname": "<hostname>", 
          "webui_url": "<framework-web-ui>" 
      } 
      
    • Выполнить это go run scheduler.go scheduler.pb.go mesos.pb.go

    • Получить список всех задач curl localhost:9090
    • Удалить задачу с завитком -X DELETE "http://10.10.10.10:9090/?id=task_id"
  2. Подождите, пока failover_timeout так Mesos не будет удалять эти задачи для вас.