Горизонтальное масштабирование в Куберне - PullRequest
0 голосов
/ 13 января 2020

Прежде всего, я довольно новичок в Kubernetes, и из-за большого количества различных архитектур и решений очень трудно найти хороший источник, соответствующий моим конкретным c потребностям.

Итак У меня есть кластер, который запускает множество клонов одного и того же приложения, которое является приложением с большой нагрузкой python. Я включаю вертикальное автоматическое масштабирование, чтобы добавить больше узлов в пиковое время, что должно помочь эффективно справляться с большими трафиками c. В чем я не уверен, так это в стратегии распределения модулей.

Я хотел сохранить максимальное количество свободных модулей, работающих в моем узле, в ожидании запросов на запуск. Является ли этот подход даже концептуально правильным / solid? Это «в духе» Кубернетеса, или я каким-то образом неправильно его использую?

Причина, по которой я думаю, что я избегаю автоматического масштабирования pod, заключается в том, что трудно определить правило, по которому также выполняется масштабирование. как я не вижу преимуществ, так как каждый модуль имеет в основном два состояния - в режиме ожидания или при включенном питании.

1 Ответ

1 голос
/ 14 января 2020

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

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

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

Автоматическое масштабирование всегда сложно настроить в начале, потому что вы никогда не знаете, что произойдет с вашими клиентами. Для этого не существует волшебной формулы, я советую вам протестировать все имеющиеся у вас опции и попытаться найти, какой подход лучше всего подходит для вашей рабочей нагрузки.

Здесь вы можете увидеть, как настроить кластерный автоскалер в большинство провайдеров общего доступа:

Автоматический скейлер GCE

Автоскалер GKE

Автоскалер AWS

Autoscaler Azure

Здесь есть статья, которая может вам помочь.

О распределении ресурсов для модулей, документация упоминание:

Если вы не укажете ограничение ЦП для Контейнера, применимо одно из следующих условий: - Контейнер не имеет верхней границы ресурсов ЦП, на которые он может использовать. Контейнер может использовать все ресурсы ЦП, доступные на узле, на котором он работает. - Контейнер работает в пространстве имен с ограничением ЦП по умолчанию, и Контейнеру автоматически назначается ограничение по умолчанию. Администраторы кластера могут использовать LimitRange , чтобы указать значение по умолчанию для ограничения ЦП.

Контейнеры не будут выделять ресурсы, если это не нужно, но в данный момент они запрашивают ресурсы все ресурсы на вашем узле будут выделены для модуля.

Вы можете создавать реплики своего контейнера, если вы хотите сбалансировать рабочую нагрузку в вашем приложении, это имеет смысл, только если вы ограничили ресурсы своего контейнера или если вы знать, что каждый контейнер / приложение поддерживает ограниченное количество запросов.

...