Про QoS классы в k8s
QoS классы или классы качества обслуживания определяют, как будет происходить управление ресурсами для каждого пода в завиcимости от request и limits по CPU и памяти.
Существует три класса:
1. Guaranteed - поды получают этот класс, если для всех контейнеров, указанные request и limits совпадают. Такой под будет иметь самые высокие шансы оставаться запущенным, в случае проблем с ресурсами. Тут еще важно помнить про такой параметр у kubelet как --cpu-manager-policy=static. Если установлен этот параметр и под имеет данный класс (Guaranteed), а также контейнерам было выделено целое количество ядер, а не в милликор, то данные ядра как-бы резервируются за этим и только этим подом, то есть никакие другие поды не будут конкурировать за ресурсы с данным подом.
2. Burstable - поды получают данный класс, если хотя бы один из контейнеров имеет request и limit, но эти значения могут не совпадать или могут быть не указаны для некоторых контейнеров. Это позволяет использовать больше ресурсов, если они доступны, но в случае проблем с ними, под будет остановлен.
3. BestEffort - поды получают этот класс, если ни один из контейнеров не имеет ни request, ни limit для CPU или памяти. Такие поды будут иметь самый низкий приоритет и буду первыми подвержены выселению с ноды, при нехватке ресурсов.
Как итог, для критически важных приложений, обычно используют класс Guaranteed, а для всего остального Burstable. BestEffort это что-то из разряда запустить под руками, что-то проверить и удалить.
#kubernetes
Post #123
40