У меня есть кластер GKE (n1-standard-1, главная версия 1.13.6-gke.13) с 3 узлами, на которых у меня 7 развертываний, на каждом из которых запущено приложение Spring Boot. Для каждого развертывания был создан по умолчанию горизонтальный стручковый автомаскалер с целевым процессором 80% и минимумом 1 / максимум 5 копиями.
При нормальной работе на развертывание обычно приходится 1 модуль и загрузка ЦП составляет 1-5%. Но когда приложение запускается, например, после выполнения непрерывного обновления, загрузка ЦП резко возрастает, а HPA масштабируется до максимального числа реплик, сообщающих об использовании ЦП, при 500% и более.
Когда несколько развертываний запускаются одновременно, например, после обновления кластера, это часто приводит к тому, что различные модули не могут быть распознаны, поскольку на них не загружен ЦП, а некоторые модули находятся в состоянии «Preemting».
Я изменил HPA на максимум 2 реплики, так как в настоящее время этого достаточно. Но я буду добавлять больше развертываний в будущем, и было бы неплохо знать, как справиться с этим правильно. Я совершенно новичок в Kubernetes и GCP, поэтому я не знаю, как к этому подойти.
Вот диаграмма ЦП для одного из контейнеров после обновления кластера ранее сегодня:
Все работает в пространстве имен по умолчанию, и я не коснулся стандартного LimitRange с 100-метровым запросом процессора по умолчанию. Должен ли я изменить это и установить ограничения? Учитывая, что инициализация требует ресурсов, каковы будут надлежащие пределы? Или мне нужно обновить тип машины, добавив больше процессоров?