350 — буквально все разрабы имеют что-то своё в кубе: включая мобильную разработку и фронтенд. Даже у меня там несколько pet projects, хоть я и админ =)
Ну если отбросить тот момент, что чувак рекламирует свой продукт (как и большинство выступающих на конференциях владельцев бизнесов), то можно найти в статье и довольно интересные мысли. В принципе, Kubernetes тоже начинался с таких вот философских статей с налетом маркетинга.
Здорово, очень круто! ) У меня такой патч был для pgbouncer (пулер соединений для Postgres) — пул-реквесту уже 5 лет :)
А в куб что-либо контрибьютить вообще нет желания, глядя на срачи других контрибьютеров с «кураторами». Проще накатать фича-реквест, а для себя просто поправить несчастные 2 строчки кода и закрыть рабочую задачку.
Прошу прощения, хотел тогда детально разобрать ваш столь интересный комментарий, но что-то меня отвлекло и я просто забыл. А жаль — было бы очень интересно подискутировать. :(
Staticcheck в последние разы у меня тоже не ругался и я сейчас не могу вспомнить с чего я вообще взял что он ругался. Возможно я что-то делал не так и это была вообще другая ветка. Пожалуй, удалю инфу про staticcheck из статьи.
К сожалению у меня обновился GoLand на MacOS и в нем перестал открываться мой старый coredump (как и любой coredump, снятый в Linux). Теперь не могу вернуть всё как было и посмотреть заново. Поэтому, я сейчас не смогу пальцем тыкнуть в точное место в коде, в котором не очищается структура с TCP-соединениями.
Мало того, сейчас я наверное и не в состоянии был бы это сделать, так как уже месяца 3 не писал ничего на Golang.
Про UDP — оговорка вышла. nodelocaldns с «апстримами» соединяется по TCP.
И вообще — почему версии не обновлялись вовремя?
Потому что у нас исторически случился Kubespray, в который был «вшит» nodelocaldns. Обновляем сам Kubespray мы раз в 3-6 месяцев (вместе с обновлением Kubernetes). Пришлось выпилить из Kubespray nodelocaldns и перейти на собственный helm-чарт.
Обновление Kubespray — сомнительное удовольствие и каждую неделю обновлять его ну никак не получится. По сути — это задача сложнее чем обновить сам Kubernetes.
О как, не знал) Наш форк оператора просто поддерживает много чего, чего нет из коробки.
Протестил вашу штуку — всё отлично. У нас правда свой аналог есть — который чистит лишнее по заданным правилам, ориентируясь по метрикам использования images от k8s api.
К сожалению, на Go в последнее время редко пишу, а к пройденному этапу возвращаться лень ) ИМХО, я там и так дал новичкам все стимулы чтобы разобраться и привёл самые важные ссылки на эту тему :)
Например, можно использовать ELK для того, чтобы наблюдать за rps на каждый backend каждого upstream, следить за их временем ответа с точки зрения nginx.
Так делать получается пока у вас ELK стек жив и его никто не шатает. В первое же окно обслуживания ELK вы потеряете такую статистику.
Мы же мониторим RPS через метрики nginx ingress controller через Prometheus. А логи ELK — только как инструмент номер 2 и для логов по фронтам.
Просто те же перцентили по фронтам вообще не интересны для SRE — это ничего не говорит ответственным за сервис инженерам в случае с тысячами микросервисов и полного отсутствия монолитов.
Спасибо за отличную статью. Собирался как раз изучить вопрос, а тут такой подарок.
Очень жаль, конечно, что политики дефолтного шедулера не описаны yaml'ом.
Вопрос: а нет подозрений какие политики кастомного шедулера привели к нормальному поведению?
Побежал накручивать мониторинг распределения подов в кластере :)
А в куб что-либо контрибьютить вообще нет желания, глядя на срачи других контрибьютеров с «кураторами». Проще накатать фича-реквест, а для себя просто поправить несчастные 2 строчки кода и закрыть рабочую задачку.
Staticcheck в последние разы у меня тоже не ругался и я сейчас не могу вспомнить с чего я вообще взял что он ругался. Возможно я что-то делал не так и это была вообще другая ветка. Пожалуй, удалю инфу про staticcheck из статьи.
К сожалению у меня обновился GoLand на MacOS и в нем перестал открываться мой старый coredump (как и любой coredump, снятый в Linux). Теперь не могу вернуть всё как было и посмотреть заново. Поэтому, я сейчас не смогу пальцем тыкнуть в точное место в коде, в котором не очищается структура с TCP-соединениями.
Мало того, сейчас я наверное и не в состоянии был бы это сделать, так как уже месяца 3 не писал ничего на Golang.
Про UDP — оговорка вышла. nodelocaldns с «апстримами» соединяется по TCP.
Потому что у нас исторически случился Kubespray, в который был «вшит» nodelocaldns. Обновляем сам Kubespray мы раз в 3-6 месяцев (вместе с обновлением Kubernetes). Пришлось выпилить из Kubespray nodelocaldns и перейти на собственный helm-чарт.
Обновление Kubespray — сомнительное удовольствие и каждую неделю обновлять его ну никак не получится. По сути — это задача сложнее чем обновить сам Kubernetes.
Протестил вашу штуку — всё отлично. У нас правда свой аналог есть — который чистит лишнее по заданным правилам, ориентируясь по метрикам использования images от k8s api.
Поправьте deployment, пожалуйста, и примеры. Если прометеус оператор установлен, он подхватит такой деплоймент. Если его нет — хуже не будет.
А ваши исходники выложите?
Так делать получается пока у вас ELK стек жив и его никто не шатает. В первое же окно обслуживания ELK вы потеряете такую статистику.
Мы же мониторим RPS через метрики nginx ingress controller через Prometheus. А логи ELK — только как инструмент номер 2 и для логов по фронтам.
Просто те же перцентили по фронтам вообще не интересны для SRE — это ничего не говорит ответственным за сервис инженерам в случае с тысячами микросервисов и полного отсутствия монолитов.
Могу ответить, но это не точно: postgis, не больше 800GiB
Очень жаль, конечно, что политики дефолтного шедулера не описаны yaml'ом.
Вопрос: а нет подозрений какие политики кастомного шедулера привели к нормальному поведению?
Побежал накручивать мониторинг распределения подов в кластере :)
Паша помог мне с командой:
Дальше сам :)
Спасибо за конструктив. Была идея сделать доклад на эту тему, но сами знаете что остановило :(