Pull to refresh
52
0
Виктор Ягофаров @Nastradamus

DevOps, Kubernetes, Monitoring, Postgres, Golang

Send message
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.
  template:
    metadata:
      annotations:
        prometheus.io/port: "8080"
        prometheus.io/scrape: "true"


Поправьте deployment, пожалуйста, и примеры. Если прометеус оператор установлен, он подхватит такой деплоймент. Если его нет — хуже не будет.
К сожалению, на Go в последнее время редко пишу, а к пройденному этапу возвращаться лень ) ИМХО, я там и так дал новичкам все стимулы чтобы разобраться и привёл самые важные ссылки на эту тему :)
Угу, рассматривал его — у нас бы он превращался в форк-бомбу :)
Тогда беру свои слова обратно =) Спасибо за уточнение. Хорошего Вам аптайма!
Какие-то детские грабли, если честно :)

Например, можно использовать ELK для того, чтобы наблюдать за rps на каждый backend каждого upstream, следить за их временем ответа с точки зрения nginx.


Так делать получается пока у вас ELK стек жив и его никто не шатает. В первое же окно обслуживания ELK вы потеряете такую статистику.
Мы же мониторим RPS через метрики nginx ingress controller через Prometheus. А логи ELK — только как инструмент номер 2 и для логов по фронтам.
Просто те же перцентили по фронтам вообще не интересны для SRE — это ничего не говорит ответственным за сервис инженерам в случае с тысячами микросервисов и полного отсутствия монолитов.

Аж захотелось для iOS что-нибудь написать для анализа трафика в сети )
В момент внедрения nodelocaldns у нас, оно существовало лишь в альфе, а эксплуатировало в проде этот софт очень мало народу. Этот дивный новый мир.
Спасибо за отличную статью. Собирался как раз изучить вопрос, а тут такой подарок.
Очень жаль, конечно, что политики дефолтного шедулера не описаны yaml'ом.

Вопрос: а нет подозрений какие политики кастомного шедулера привели к нормальному поведению?

Побежал накручивать мониторинг распределения подов в кластере :)
А где кровавые подробности и пути решения, которые так необходимы новичкам? Или автор предлагает всем обращаться к Павлу?


Паша помог мне с командой:
cd ~/go/src/k8s.io/dns && \
GO111MODULE=off GOOS=linux go install ./... ./vendor/...

Дальше сам :)

Может есть смысл сделать видео с комментариями.


Спасибо за конструктив. Была идея сделать доклад на эту тему, но сами знаете что остановило :(

Information

Rating
Does not participate
Location
Лермонтов, Ставропольский край, Россия
Date of birth
Registered
Activity