У меня есть кластер с 3 узлами. Ура! Кластер не выполняет автоматическое масштабирование узлов.
Эти узлы запускают удивительное веб-приложение, но большую часть времени почти ничего не делают.
У меня также есть фоновый процесс, который может использовать бесконечное количество ЦП (полезность быстро падает, но остается полезной).
Я хочу, чтобы эти фоновые модули работали на каждом узле и замедлялись, чтобы оставить 20% запаса ЦП на узле. Или похожие.
Это форма DaemonSet.
Могу ли я попросить Kubernetes отменить приоритет модулей DaemonSet с запасом 20%?
Могут ли модули DaemonSet обнаруживать загрузку ЦП узлов и отключать свои приоритеты (рискованно, если есть ошибки)?
качество обслуживания выглядит так, как будто он предназначен для планирования и исключения модулей, чтобы освободить место для других модулей, но они не становятся «приятными».
приоритет тоже похоже на выселение.
Вы можете достичь того, что ищете, разными способами.
Я полагаю, что вы уже читали это и это, основанные на теории этот другой.
Также у RedHat есть хороший документация об установке аппаратных ограничений через программное обеспечение.
Здесь вы можете узнать, как ограничить использование процессора, которое может быть установлено внутри контейнера для достижения того, что вы ищете.
Итак, резюмируем: с K8S вы можете устанавливать запросы и лимиты, а внутри контейнера вы можете устанавливать еще более ограничивающие лимиты.
Надеюсь, это даст вам решение или, по крайней мере, путь, по которому нужно следовать, чтобы достичь того, чего вы хотите.
Привет, Матиас, это здорово! Спасибо! Ограничения ЦП Kubernetes/Docker, по-видимому, напрямую связаны с контрольными группами. Я ошибочно думал, что это реализовано самим Kubernetes. Очень просто!
Вы можете использовать API-интерфейс метрик kubernetes для сбора данных об использовании ресурсов и изменения ограничений процессора для развертывания/демонсета/реплики и перезапуска модуля, но это не похоже на «настройку в реальном времени», поскольку модуль необходимо перезапустить.