У меня была пара идей. Я не знаю, сработают ли они, но я пишу это как ответ, так как это довольно долго!
Одна идея
Контейнер A: Ваши контейнеры, которые всегда работают.
Контейнер X: один из множества различных контейнеров, которые не всегда работают.
Начните с определения определения Задачи для A и всех различных типов X.
Одна вещь, которую вы можете сделать при запуске задачи, это указать определенные ограничения. В контейнере A вы можете использовать API, чтобы определить, какой экземпляр EC2 запущен контейнером, а затем указать это как ограничение при выполнении задачи одного из типов X.
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html
Возможно, вы попытаетесь выполнить задачи, в которых ограничение невозможно (если экземпляр уже полностью зафиксирован в ресурсах), но по крайней мере вы получите ошибку.
Еще более простая идея
Иметь контейнер Задача резервирует для себя достаточно ресурсов плюс некоторое количество контейнеров X. Затем просто запустите экземпляр вручную, установив док-разъем внутри контейнера и установив с ним связь. Вам нужно будет вручную убедиться, что вы не перегружены ресурсами.
Проблемы с обоими
Что я получил в своем комментарии о распределении ресурсов, так это то, что как бы вы это ни делали, если вы балансируете нагрузку на контейнере A, балансировщик нагрузки не может знать, что у контейнера A, на который они направляются, нет возможности вращаться дополнительный контейнер Xs. Скажем, экземпляр EC2 имеет 4 ЦПУ и 8 ГБ ОЗУ, а контейнер А использует половину этого. Допустим, контейнер X использует 1 процессор и 2 ГБ оперативной памяти. Как только 2 братьев и сестер контейнера X выполняются в одном и том же экземпляре, нет возможности начать больше, но балансировщик нагрузки не будет знать об этом при маршрутизации пользовательского трафика в контейнер A. Надеюсь, это имеет смысл. Таким образом, вам может потребоваться извлечь открытый интерфейс к контейнеру, который больше ничего не делает, лямбда и т. Д. Этот уровень может знать, какие экземпляры контейнера A имеют свободную емкость для запуска контейнера X.