
У меня есть кластер kubernetes, работающий с 4 рабочими узлами (Ubuntu 20.04 с 4 CPU), и я вижу высокую среднюю нагрузку на всех из них. Вот результат top на одном из узлов: вершина
Я не уверен, ожидается ли это, так как этот узел запускает 111 контейнеров. Может ли быть что-то еще, вызывающее высокую среднюю нагрузку, или это просто связано с тем, что контейнеров слишком много, и мне просто нужно больше ресурсов?
решение1
Средняя нагрузка — это количество запущенных или ожидающих запуска программ.
Top хорош, но дает только половину картины — то, что запущено или ожидает запуска в процессоре. Другая половина — это то, что ждет завершения ввода-вывода на диске.
Для дискового ввода-вывода atop
это удобно, нажмите, dчтобы увидеть использование диска процессом. (Обычно для этого вам нужно будет запустить его как root.)
решение2
Типичное практическое правило заключается в том, что вы не хотите, чтобы ваша средняя нагрузка была больше, чем количество ядер на вашем хосте. Это идеальная ситуация. Превышение этого значения не всегда является проблемой. По моему опыту, средняя нагрузка сама по себе не всегда является индикатором проблемы. Если у вас высокая нагрузка, высокая загрузка процессора sys или высокий iowait, то вы, вероятно, в плохом месте.
С kubernetes я часто слышу, что нужно устанавливать ограничения на ресурсы. Если ограничений нет, то каждый pod имеет полный доступ к узлу. Правильный размер приложений — непростая задача, на мой взгляд. Особенно когда все пытаются закинуть необлачные нативные приложения в k8s.
В качестве предложения вы можете уменьшить рабочую нагрузку, добавить больше рабочих процессов (масштабирование вширь) или добавить больше ресурсов к узлам (масштабирование вверх) или комбинировать эти два варианта.