Как стать автором
Обновить
6
0

Пользователь

Отправить сообщение

Хорошая статья, спасибо.

Отдельное огромное спасибо за `use_apiserver_cache`. По-скольку Вы раньше столкнулись с проблемой, все, что нам нужно было для решение - это найти Ваше решение в чендж логах)))

Пару вопросов:
1. Зачем вообще нужен Reloader? Как я понимаю, он исполняет 2 функции Валидация и Релоад Vector Agent'ов. Первое еще понятно, но зачем "релоадить" агенты? Чем не устроил аргумент "--watch-config"? (https://vector.dev/docs/administration/management/#automatic-reloading-on-configuration-change)
2. Получается, если валидация происходет в Reloader'e, валидируется ВЕСЬ итоговый конфиг, который собирается из CR. Есть возможность узнать какой именно CR с ошибкой?
3. Сталкивались с проблемой генерации Огромного конфига для Vector'а, который не влезает в лимиты configMap'ы?


+ Можете пожалуйста дать ссылку, где именно описан (код) процесс валидации? Это сейчас немного острый момент для меня и я хотел бы подглядеть)

Сорян за вопрос не в тему, но как вы делали такие прекрасные картинки?

Интересная статья. Про метрики согласен на все 199%. Очень удивился, когда при анализе просадки в производительности после включение метрик пожирание ресурсов увеличилось в 10 раз. Было весело)

Пришлось искать проблемы на ощупь)

Я точных ссылок и ошибок сейчас не вспомню, но есть еще одна большая проблема с производительностью, на которую наткнулся. Если в Vector'e много source'ов (Я заметил просадки, когда их стало >300) происходит магия. По умолчанию все source и последующая обработка логов (pipeline) делятся на "группы". Количество этих групп ограничено (хардкод). И если у вас source'ов, больше чем этих групп - все избыточные source попадут в одну группу (либо 0 либо 1, не помню точно).
Так вот, если у вас такой сценарий, скорее всего все логи, которые обрабатываются в группе 0 (или 1) - вы потеряете, т.к. вектор не затащит.

Мы пишем свой оператор для вектора (чтобы иметь функциональность, которую дает Logging operator, но без Logging Operator'а, потому что он и fluentd под капотом - говно). И из-за этой "ошибки" нам пришлось писать функционал, который сильно усложняет конфигурацию vector'а, но улучшает его производительность. То есть использование vector'а "в лоб" - практически невозможно в высоконагруженной реальности)

Пока у них есть плашка "The opentelemetry source only supports log events at this time." (https://vector.dev/docs/reference/configuration/sources/opentelemetry/)
Ни о каком нормальном решении для обсервабилити речи быть не может)

Сорри - OperatorSDK, а не OpenSDK. Попутал

Мы хотели простой в реализации и будущей поддержке оператор. Использование архитектуры sample-controller подразумевает прямой использование функционала client-go. Получается слишком низкоуровнего и если кто-то захочет поучаствовать в разработке оператора (опенсорс же все) - будет сложней.

Нам понравилась реализация Controller Runtime, где все объекты соответствуют и интерфейсу client.Object и runtime.Object. (Минусы, конечно, есть. Из этой же статьи их видно)

+ нативное использование Controller Runtime в kubebuilder и OpenSDK стало немаловажным фактором.

Изначально мы архитектурно хотели сделать оператор схожим с оператором seaweedfs, но в процессе поняли, что настолько "в лоб" не получится и начали "поглядывать" на реализацию оператора у Виктории и того же Логгинг Оператора. (У логгинг мы точно знали все минусы, т.к. тесно с ним работали и даже отсылали им пулреквесты на всякие мелочи (да и не мелочи тоже), а у Виктории, на мой взгляд, очень хорошая и понятная архитектура кода)

А это и не ко мне вопрос был. Простите)

Тогда тут, скорее всего, обсуждается как это сделать, работая именно с Loki.

С Loki у меня опыт работы близок к 0, по этому вряд ли смогу подсказать

Нет. Все проходящие логи либо не трансформировались, либо json, либо полностью разрезались регуляркой.

Из issue я не очень понимаю, что человек имеет в виду под

I have 2 field in log lines

Что значит «поля» в логах?

Звучит так, будто человеку нужна регулярка, но он “don’t want”

минимальный опыт программирования на любом языке;

Что-то мне подсказывает, что если DevOps(/SRE/инфраструктурный инженер) дошёл до кондиции, когда понимает, что ему нужен оператор для разворачивания какого-то ПО в кластере - он первым делом пойдёт искать уже готовый оператор с кучей звёзд.

Если же он не нашёл подходящий ему оператор, то, скорее всего, перед человеком стоит какая-то нетривиальная задача, и чаще всего минимальный опыт в программирований приведёт к очень плохому итоговому продукту.

Pull requests уже есть. Там дорабатываются мелочи

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность