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