Andor
Если надо не список, то бери x_real_ip, там вроде строка была
Rainbow
Мда, точно уже не буду пробовать, я тогда уж лучше js буду генерить конфиги, чем jsonnet. import { set } from 'unchanged' const limits = { ... }; export default set('containers[0].resources.limits', limits, defaultConfig);
G72K
вон пример выше: хочу простой способ поправить первый элемент массива, надо было дописать в него одно поле
Если у вас массив уже есть в какой то local переменной arr, то можно arr2 = [arr[0] + 100] + arr[1:];
Andor
Из либы он приходит прямо в {}
Rainbow
update-in из clojure 🙈 имутабельность не должна быть болью для разработчика
Михаил
чуть позже добавлю
Михаил
лол
Alexander
Andrey
Эта опция на горизонте, но пока не разбирался подробно, поэтому боюсь соврать.
Я замутил на проде и да, создаётся корневая группа с лимитами capacity - прописанные резервы
Andor
Збс тема
Andrey
Збс тема
По наблюдениям - поды выселяются более своевременно, при резервах в два гига памяти ноды больше не уходят в ступор при чем-то особо внезапно разожравшемся
Andrey
Я сделал enforce только на allocatable, но как я понял, энфорсить лимиты для системных сервисов и кубокомпонентов особого смысла нет - при энфорсе allocatable резервы можно просто сделать достаточными и для того, и для другого
Andrey
Насколько я в принципе понимаю, задание реквестов и лимитов по ресурсам ничего для подов не резервирует и в критических ситуациях все одно упирается в своевременность выселения подов согласно QoS
Andrey
Поэтому я и интересовался опцией --experimental-memcg-notification или вроде того
Andrey
Если я неправ, то буду благодарен за поправки
G72K
если в неймспейсе где опероатор, то зачем у оператора права на чтение сервисмониторов в других неймспейсах
Потому что так код устроен. Если хочется чтобы оно создавало Прометей в одном неймспейсе, но следило за сервис мониторами в других , то там есть WIP ПР от меня . WIP потому что все их тесты не переписал на мультинеймспейность
G72K
https://www.forbes.com/sites/justinwarren/2018/12/19/service-mesh-is-super-hot-why/ статья в форбсе - ребята к успеху пришли
Интересно что енвоевцы, а не linkerd. Вот что значит на Яву ставки делать :)
Andrey
Цитирую доку: "Namespaces to be selected for ServiceMonitor discovery. If nil, only check own namespace."
Andrey
Я жопой прочитал дискуссию.
G72K
А как же поле ServiceMonitorNamespaceSelector в PrometheusSpec?
Вопрос не в дискавери, а влишних правах.
Andrey
Забудь, что я написал.
G72K
Нет, поставил точечку напротив имени
Andrey
Поэтому я и интересовался опцией --experimental-memcg-notification или вроде того
Это не особо много бонусов принесёт. Тут просто разница, как в ядре между polling и interrupts. Interrupt в данном случае - это memcg notification. Т.е. о проблеме в kubelet прилетит "Interrupt" (на самом деле message в eventfd(2)). Это даст несколько секунд. Принесут ли они пользы? Не знаю. Учитываю, что фичу с memcg notification пилят уже третий год - вряд ли.
Andor
и права оказались не лишние, просто было недопонимание
G72K
у меня уже заработало
Оно работает, но требует доступа ко всем секретам, подам и ещё что-то там в тех же неймспейсах откуда ServiceMonitor берутся
Andor
у нас пофигу
Andor
а потом не моя проблема будет :)
Andrey
Да, но... но в общем-то да. Было бы полезно.
Опции, которые я поставил, впрочем, вроде должны сгладить ситуацию, раз kubelet еще и для оом-киллера скор ставит в соответствии с QoS
Andor
у меня на авс прометей с выключенными лимитами не убивался и завешивал ноду
Andor
нода под него выделена, поэтому на прод не влияло особо не разбирался, просто прибивал ноды
Andor
потом повесил лимит чуть-чуть меньше общей памяти нод
Andor
стало убиваться само
Andor
ну а потом вышел релиз с фиксом мемлика
Dmytro
можно пример когда нельзя?
Dmytro
конечно если мы хостинг какой и реселлим цпу и память то надо оверкоммит делать но если мы в своем кластере свои ворклоады гоняем - я пока не знаю кейса зачем делать requests != limits
Andor
особенно если с автоскейлерами
Dmytro
более того, с 1.11 или какой там версии где цпу шедулер подрихтовали ещё и цпу очень желательно округлять до целого числа чтобы под прибивался на конкретные ядра и не было контекст свитчей
Dmytro
ничо, у тебя скоро будет начальником https://twitter.com/php_ceo
Andor
lol
Andrey
более того, с 1.11 или какой там версии где цпу шедулер подрихтовали ещё и цпу очень желательно округлять до целого числа чтобы под прибивался на конкретные ядра и не было контекст свитчей
Это вот прям очень круто для cpu-heavy, cache-heavy. И прочим задачам. А вот большинству приложений, которые 99% времени пишут в сокет или читают из него, и не важно в какой, это не нужно. Поэтому guaranteed с cpu manager не всегда нужны и полезны.
Andrey
Ну и да, тот же HPA использовать для скейлинга, тогда guaranteed тоже не всегда полезен. Особенно на baremetal.
Dmytro
тут спору нет, таким и 0.1 цпу нарезать можно
Dmytro
чтобы от 90% скейлился например а лучше скейлить по латенси вообще
Dmytro
или мы хотим 100% цпу загрузить (и пол на 95% перцентили по латенси и т.д.)?
Andrey
почему? HPA настроить правильно
Да, я не туда в рассуждениях заехал. Но я про I/O heavy workload'ы (коих большинство) всё же вещаю.
Dmytro
почему оно должно быть не guaranteed?
Andor
Ну и да, тот же HPA использовать для скейлинга, тогда guaranteed тоже не всегда полезен. Особенно на baremetal.
а по-моему наоборот, через HPA можно сделать чтобы все поды были guaranteed
Andrey
ну ставим там цпу requests/limit поменьше
С memory не так чисто всё, как я вижу. Хотя... зависит от программы, наверное. Я был на HL++ 2018 на презентации чувака, который топил за guaranteed QoS. В общем-то, проникся.
Andrey
Я, честно говоря, задумался, почему не везде стоит guaranteed у нас. Пошёл изучать вопрос.
Andrey
Наверное, ответ кроется в более ответственном анализе ресурсов кластера, постоянном мониторинге, а также грамотной настройке HPA.
Andor
короче уметь готовить надо, чтобы везде сделать guaranteed и при этом чтобы не было много простаивающих ресурсов
Dmytro
С memory не так чисто всё, как я вижу. Хотя... зависит от программы, наверное. Я был на HL++ 2018 на презентации чувака, который топил за guaranteed QoS. В общем-то, проникся.
с memory плохо конечно, например с тем же php-fpm памятьв все время скачет туда-сюда но как бы я опять не вижу зачем ставить requests меньше limits огребать лишний раз OOM kill - в php-fpm ты их и так наотгребаешься будь здоров (прямо вижу будущее Andor)
Dmytro
короче уметь готовить надо, чтобы везде сделать guaranteed и при этом чтобы не было много простаивающих ресурсов
как не было простаивающих? тебе все равно нужно место на нодах чтобы делать rolling update
Dmytro
ну и всегда нужно иметь лишнюю ноду
Andrey
можно пример когда нельзя?
А зачем тогда вообще можно деплоить поды без лимитов и тем более реквестов?
Andrey
А зачем тогда вообще можно деплоить поды без лимитов и тем более реквестов?
Есть workload'ы на которые тебе наплевать. Очень редко, но они есть.