Как решить, сколько экземпляров услуги мне нужно в Kubernetes? - PullRequest
0 голосов
/ 02 ноября 2018

Так что в основном я начинаю с Kubernetes и хотел попробовать кое-что. На этом этапе я хочу развернуть веб-сервер, базу данных, сервер NodeJs и так далее ... А теперь, как мне решить, сколько экземпляров каждой из этих служб мне нужно на моих серверах?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Если вы все равно используете kubernetes, используйте:

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

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

  • набор с состоянием или оператор для компонентов БД (оцените начальный размер кластера и увеличьте его вручную)

И все готово.

Вещи будут автоматически расти и уменьшаться в зависимости от нагрузки.

Примечание. Используйте ответ @Trin в качестве руководства по настройке автомасштабаторов и критериев автоматического масштабирования. Существует список метрик, предоставляемых системой метрик kubernetes, которые вы можете использовать для автоматического масштабирования.

0 голосов
/ 02 ноября 2018

Это вопрос со сложным ответом, зависящим от вашего конкретного поведения приложения и использования ресурсов. Проще говоря, «краткий ответ» будет: «Это зависит». Это зависит от следующих основных факторов:

  • Использование ресурсов приложения
    • Сколько RAM, CPU, Disk, сокетов, и т.д. ... ваше приложение обычно использует: Среднее? Максимум? Min
    • Какие узкие места или ограничения ресурсов возникают у приложения первыми?
    • Какие подпрограммы в приложении могут вызвать более высокое, чем обычно, использование? (В этом и заключается большая сложность ... все приложения различны и выполняют множество функций в ответ на входные данные, такие как запросы клиентов. Не каждая функция имеет одинаковое поведение с использованием ресурсов ресурса.)
  • Высокая доступность / отказоустойчивость
    • Одна из причин, по которой вы выбрали Kubernetes, вероятно, заключалась в простоте масштабирования приложения и обеспечения его высокой доступности без единой точки отказа.
    • Это сводится к следующему: насколько доступно ваше приложение?
    • На уровне кластера / сервера: сколько узлов может выйти из строя или быть неработоспособным и при этом поддерживать достаточно рабочих узлов для обработки запросов?
    • На уровне Приложения / Контейнера: Сколько Pod с может выйти из строя и по-прежнему обрабатывать запросы или предполагаемую операцию?
    • Какой уровень снижения качества обслуживания приемлем?
  • Как отдельные приложения взаимодействуют и ведут себя вместе?
    • Еще один действительно сложный вопрос, который трудно определить, не наблюдая за их совместным поведением
    • Вы можете попытаться провести некоторый анализ таких показателей, как «Запросы в секунду» в сравнении с использованием ресурсов и выбросами. Однако это может быть трудно упростить до одного числа или постоянной / линейной причинно-следственной связи.
    • Некоторые запросы или входные данные вызывают "раздувание" или усиление нагрузки на подкомпоненты?
    • Например:
      • Существуют ли какие-либо запросы SQL, которые приводят к более высокой загрузке БД, чем другие?
      • Существуют ли какие-либо операции, которые могут привести к более высокому использованию ресурсов в Pod s при поддержке других Service s?
      • Как системы ведут себя вместе в ситуации «максимальной нагрузки»?

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

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