Comments 7
Квот по IOPS нет. Если какой-то безумный контейнер неистово пишет на диск, то у всех остальных контейнеров, использующих тот же диск будут проблемы.
На эту тему я давно и внимательно слежу за https://github.com/kubernetes/kubernetes/issues/92287
Issue открыт в 20м году и пока реализации, как я понял, нет?
В cgroups v2 появились контроллеры, так что реализация чисто за container runtime (ну и кубом потом)
https://github.com/intel/goresctrl/blob/main/doc/blockio.md реализация есть, но надо иметь немного фантазии, чтобы это в kubelet добавить и через аннотацию с пода прокидывать... то что пытаются реализовать в сообществе k8s, конечно говно
Судя по blockio
оно только для блочных устройств?
То есть если fs монтировать (cephfs, например) то никаких тебе квот.
Ну уже хоть что-то.
blockio только для блочных. Для сетевых фс единственный параметр для ограничения это bandwidth, там много других способов это ограничить, начиная от middleware, заканчивая разными аплинками между хранилищем и workload нодами... но это все будет лежать ниже k8s
cgroup2 allows comprehensive control and accounting of all IOs per-cgroup: buffered, filesystem metadata, swap, and direct IOs, making IO control a far more effective component of a resource utilization strategy.
https://facebookmicrosites.github.io/cgroup2/docs/io-controller.html
Вроде как в cgroup v2 не только на уровне пропускной способности можно резать.
Ну и bandwidth это не совсем то же самое, что и io. Можно при низком bandwidth ушатать сторадж:)
Спасибо огромное за такие подробные статьи! Пожалуйста, не бойтесь углубляться в рассказы о низкоуровневых процессах. На Хабре куча статей-туториалов, в которых авторы упускают низкоуровневые процессы, а без них не возможно понять как работает тот или иной инструмент.
Если вы можете так же подробно рассказать о чём-то ещё, пожалуйста пишите ещё!)
Квоты в Kubernetes: очевидные, менее очевидные и совсем не очевидные