Я работаю над проектом, который использует Openwhisk. Я создал кластер Kubernetes в облаке Google с 5 узлами и установил OW на нем. Моя функция без сервера написана на Java. Это делает некоторую обработку, основанную на аргументах, которые я передаю ему. Обработка может длиться до 30 секунд, и я вызываю функцию несколько раз в течение этих 30 секунд, что означает, что я хочу, чтобы было создано большее количество контейнеров (модулей) времени выполнения, не дожидаясь, пока предыдущий вызов завершится sh. В идеале, должен быть контейнер для каждого вызова, пока ресурсы не будут закончены.
Теперь, что происходит, когда я начинаю вызывать функцию, создается первый контейнер, а затем через несколько секунд другой, чтобы служить первые два вызова. С этого момента я продолжаю вызывать функцию (не более 5 одновременных вызовов), но контейнеры не запускаются. Затем, через некоторое время, создается третий контейнер, а иногда, но редко, четвертый, но только спустя долгое время. Что даже странно, так это то, что все контейнеры запускаются на одном узле кластера или иногда на двух узлах (всегда одни и те же два узла). Другие узлы не используются. Я тщательно настроил кластер. Каждый узел помечен как invoker. Я попытался поэкспериментировать с памятью, назначенной каждому контейнеру, с максимальным количеством контейнеров, я увеличил максимальное количество вызовов, которое я могу иметь в минуту, но, несмотря на все это, я не смог увеличить количество созданных контейнеров. Кроме того, я пробовал на разных машинах, используемых для кластера (разное количество ядер и памяти), но это было напрасно.
Поскольку Openwhisk все еще относительно молодой проект, я не получаю достаточно информации от официальная документация к сожалению. Может кто-нибудь объяснить, как Openwhisk решает, когда начинать новый контейнер? Какие параметры я могу изменить в values.yaml, чтобы получить большее количество контейнеров?