Dmytro
вот ещё документацию читать, когда это было модно?😀
Andrey
Vpa с hpa работает, если использовать custom metrics, например rps
Andor
RT тогда уж
Andrey
Что это?
Andor
response time
Andrey
Ну это уже частности. Но я подумал и пока решил не трогать vpa
Dmytro
тогда уже надо перцентили делать
Dmytro
не по среднему же скейлить
Andrey
И лимиты не ставлю
Andor
тогда уже надо перцентили делать
ну это уже от твоих хотелок зависит
Andor
И лимиты не ставлю
и реквесты тоже, надеюсь
Andrey
Ставлю, иначе кластерный scaler работать не будет
Dmytro
какой-то дикий запад- лимиты не ставь, воруй-убивай
Andrey
Оом сам разберётся
Andrey
Лимитирование в контейнерах на моей памяти всегда работало через одного место. А гарантии полезны семи по себе
Andrey
Согласен. Я делаю RAID1 на SSD + HDD. Планировщик сам разберётся с божьей помощью.
Vadim
через одно место лимиты работали только в жабе емнип
Andor
Лимитирование в контейнерах на моей памяти всегда работало хорошо. И гарантии полезны сами по себе
Andrey
через одно место лимиты работали только в жабе емнип
Она же heap не ограничивала автоматически просто. Но всякие параметры в JVM можно было всегда кидать и подстраивать под cgroup limit.
Vadim
не стану гадать что там у человека не работало, особенно без ссылок на багрепорты
Etki
емнип там проблема была в том, что она систему целиком видела, а не то, что ей в лимитах нарисовано, поэтому весь автоматический расчет тредов гц и прочего происходил как будто она на ноде одна
Dmytro
JVM не в курсе про cgroups - поэтому спавнит потоки по количеству ядер
Dmytro
ну и память тоже
Dmytro
но это не только у явы а почти у всех
Dmytro
вроде бы есть тикет на маунт инфы из cgroups в /proc/cpuinfo как в lxc
Etki
уже в курсе
ей мишка рассказал
Dmytro
уже в курсе
уже это в 9 версии? а как быть легаси прогам?
Etki
stradat
Andor
по-моему даже в 8 завезли
Vadim
бэкпортнули в восьмую
Andor
но не уверен
Dmytro
у монги аналогичная история с памятью - нужно в конфиге прописать нужные цифры
Etki
но вообще никто не мешает запускать восьмерку на одиннадцатой
Andor
а легаси могут юзать lxcfs
Dmytro
ну 8 это ж для кровавого ынтырпрайза все ещё недостижимая мечта
Dmytro
там хорошо если 6
Dmytro
а то ж и на 5 есть сидят
Vadim
кровавому ынтырпрайзу бекпортнут хоть на солярку на синклерах, не стоит за них волноваться
Dmytro
компании Вадима или Ораклу денежки носят
Andrey
на cpu вполне себе работает
Не все так просто. Например вот https://github.com/kubernetes/kubernetes/issues/51135
Dmytro
и что же вы ещё не бекпортнули на 6?
Etki
а то ж и на 5 есть сидят
все еще запускается на одиннадцатой
Etki
(а лучше бы нет, прибейте вы тайп эрежу уже наконец)
Dmytro
или просто это не афишируется?
Andrey
В виртуозных контейнерах лимиты рекомендовали ставить с умом и только в крайних случаях
Dmytro
Не все так просто. Например вот https://github.com/kubernetes/kubernetes/issues/51135
Про CFS дырки в яве линкедин ещё в 2016 писали же и это же пофиксили в 1.10 или в 1.11 для целого числа ядер?
Andrey
Это не специфично для Явы
Dmytro
поэтому наборот - ставьте cpu requests=limits(type int)
Dmytro
само собой, но т.к. ява генерирует потоки по числу ядер ноды а не cgroups она выжирает cfs циклы
Dmytro
и выходят дырки когда цпу не дается этому контейнеру
Andor
ну 8 это ж для кровавого ынтырпрайза все ещё недостижимая мечта
где кровавый ынтырпрайз с 5 джавой, а где кубернетисы
Dmytro
ну как где, бывает такие продукты продаются как коробочные решения
Dmytro
бывает что решил банк в облако мигрировать всякие некритические сервисы
Dmytro
или у них там есть отдел инноваций как в SAP
Dmytro
и есть SAP cloud
Dmytro
и есть SAP 😀 ну или ынтырпрайзы которые пошли в сап клауд
Dmytro
да много всего бывает
Andrey
поэтому наборот - ставьте cpu requests=limits(type int)
Как раз таки не надо лимиты ставить, реквестов хватит. Ядро раздаст CPU shares пропорционально запросам, при этом приложение вылезешь за установленные рамки только если другим приложениям CPU не нужен. Таким образом повышается утилизация CPU. А лимиты тупо не дадут контейнеру CPU даже если он никому не нужен. Вот такая логика
Andrey
Грубо говоря если есть два контейнера с запросом в 1 CPU, а на ноде доступно 4, то каждый получит по 2. С лимитом 2 ядра бы тупо простаивали
Andor
а если этим надо будет кпу больше 1, то его ресайзнет
Andrey
с лимитом 2 на ноду приедет кто-нибудь другой
А с реквестом типа не приедет? Вы таки будет заморачиваться, чтоб у вас всегда сумма лимитов равнялась капасити? Смысл?
Andor
Н. Надёжность.
Andrey
CPU share не менее надёжно, чем CPU quotes
Dmytro
Как раз таки не надо лимиты ставить, реквестов хватит. Ядро раздаст CPU shares пропорционально запросам, при этом приложение вылезешь за установленные рамки только если другим приложениям CPU не нужен. Таким образом повышается утилизация CPU. А лимиты тупо не дадут контейнеру CPU даже если он никому не нужен. Вот такая логика
ну враки же, простите https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/ > When CPU manager is enabled with the “static” policy, it manages a shared pool of CPUs. Initially this shared pool contains all the CPUs in the compute node. When a container with integer CPU request in a Guaranteed pod is created by the Kubelet, CPUs for that container are removed from the shared pool and assigned exclusively for the lifetime of the container. Other containers are migrated off these exclusively allocated CPUs.
Dmytro
rtfm
Andrey
И? Там нужно для этого лимит поставить?
Dmytro
т.е. ещё раз cpu requests=limits(type int) даёт результатом то что под прибит к конкретным ядрам
Dmytro
вроде черным по белому написано
Dmytro
в примере тоже вроде все понятно
Andor
CPU share не менее надёжно, чем CPU quotes
речь не про надёжность механизмов ядра
Andrey
> in a Guaranteed pod
Там речь вообще по частный случай, м там как раз не используются лимиты, а выделяется ядро(а).
Dmytro
# Pod is in the Guaranteed QoS class because requests == limits requests: # CPU request is an integer cpu: 2 memory: "256M" limits: cpu: 2 memory: "256M"
Dmytro
...
Dmytro
даже продолжать полемику не хочется