Распространение Nomad после восстановления клиента

#high-availability #nomad

#высокая доступность #nomad

Вопрос:

Я пытаюсь понять, как Nomad spread работает с ошибками клиента.

В заданиях Nomad вы можете определить spread раздел таким образом, чтобы экземпляры задания распространялись на всех клиентах.

Вот документы: https://www.nomadproject.io/docs/job-specification/spread

Поскольку spread это мягкое предпочтение, если один из клиентов выйдет из строя по какой-либо причине, Nomad перенесет все задания, выполняемые на потерянном клиенте, на другие доступные клиенты. (Это вступает в силу даже при упаковке в корзину).

В случае сетки из 2 клиентов и задания с двумя распределениями, если один клиент выходит из строя, оба распределения будут выполняться на одном клиенте.

Что происходит, когда сетка восстанавливается и открывает нового клиента? Будут ли задания повторно распространяться, следуя spread строфе, на оба узла, или два распределения будут продолжать выполняться на одном клиенте до повторного запуска задания?

Ответ №1:

Трудно найти ответ на этот вопрос. У меня сложилось впечатление, что, если нет ограничений на ресурсы, Nomad не будет переносить выделение. Итак, в вашем примере задания не будут повторно распространяться.

Несколько мест для поиска для большей уверенности:

  1. Есть привязка к узлу: https://learn.hashicorp.com/tutorials/nomad/affinity , binpack , job-anti-affinity , и node-reschedule-penalty может повлиять на перемещение вашего распределения (но опять же, я думаю, что это просто из-за конкуренции за ресурсы).
  2. Вытеснение теперь имеет место, но опять же, похоже, больше связано с ограничениями ресурсов: https://www.nomadproject.io/docs/internals/scheduling/preemption
  3. Здесь есть тест распространения, который, я думаю, можно изменить для проверки вашего варианта использования: https://github.com/hashicorp/nomad/blob/235f938e87afbdc73037c1868a17668c06a8cf94/scheduler/generic_sched_test.go#L616 , Я пытался сделать это сам, но немного увяз в сложности.

Как ни странно, я никогда не видел, чтобы распределение добровольно мигрировало на узле со свободными ресурсами, и я не видел, чтобы распределения свободно перемещались на новые пустые узлы.