Я изучаю семафоры в рабочих процессах проекта Argo, чтобы избежать одновременных рабочих процессов, использующих один и тот же ресурс.
Мой вариант использования состоит в том, что у меня есть несколько внешних ресурсов, которые только один рабочий процесс может использовать по отдельности. Пока все хорошо, но иногда ресурс требует некоторого обслуживания, и в течение этого периода я не хочу, чтобы Арго запускал какой-либо рабочий процесс.
Думаю, у меня есть два варианта:
- Я протестировал ручную установку значения семафора в configMap на значение 0, но Арго все равно запустил один рабочий процесс.
- Я могу запустить рабочий процесс, который будет выполняться вечно, пока он не будет удален, требуя блокировки синхронизации, но это требует дополнительных накладных расходов для запуска рабочих процессов, которые ничего не делают.
Так что мне интересно, как это должно работать, если я установлю значение семафора на 0, я думаю, что тогда он не должен запускать рабочий процесс, поскольку он говорит 0. У кого-нибудь есть информация об этом?
Вот шаги, которые я выполнил:
- Сначала я применяю свою конфигурационную карту с помощью kubectl -f.
- Затем я отправляю несколько рабочих процессов, и, поскольку все они используют один и тот же семафор, Арго запустит один, а остальные будут выполняться по порядку по одному.
- Затем я изменяю значение семапура с помощью kubectl edit configMap
- Отправьте новое задание, которое затем выполнит Арго.
Возможно, Арго не перезагрузит configMap, когда я обновлю configMap через kubectl edit? Я хотел бы программно обновить конфигурационную карту в будущем, но сейчас использовал kubectl edit для тестирования.
0
, и он вел себя так, как ожидалось (выполнение рабочего процесса заблокировано). - person Michael Crenshaw   schedule 19.10.2020