Dmitry
Не стоит
Kirill
А без кластера?
Kirill
Почему в лучшие не стоит можете в вкратце объяснить
Kirill
Мнения разделились)
Kirill
Там нужен ttl? А то тарантул проще в кластер запихнуть
Нужно просто иметь отказоустойчивый распределеный кэш в оперативке
Dmytro
думаю что редис без персистента запускать можно без проблем, а с персистентом и кластером - тут уже все сложнее
Kirill
Без персисптнса, но в кластере
Andrei
Twemproxy умеет шардить, но не в курсе, умеет ли писать в несколько бэкэндов. Было какое-то решение для мемкеша, не помню только какое
Anton
А эт, приложения вообще можно в к8с запускать?
Anton
Почему вдруг редис нельзя?
Anton
Пихаешь statefulset, вольюмы для хранения
Anton
Одна только сложность описать все это для создания, расширения или удаления нод
Anton
Если конечно в вашей команде есть выделенный человек для редиса и прочего хранения, делайте как он скажет
Anton
Потому что там его ответственность начинается
Nikolay
Есть готовый redis-ha helm chart, немного его допилить и можно использовать вполне себе, именно как кэш нормально работает без персистента.
Nikolay
Потому что там его ответственность начинается
С этого все начинается, твоя ответственность, моя хата с краю)
Anton
Ну поднимаешь сам, сам отвечаешь
Dmytro
У меня несколько монг в кубе крутится через стейтфулсет уже больше года в продакшене - в целом нормально. Система не сильно нагруженная и там просто обычные репл сеты из трёх нод, без динамического добавления нод
Dmytro
Подумывал о том чтобы rabbit тоже засунуть в кластер - там вообще нагрузки почти нет у меня, 2к сообщений от силы - но никак руки не дойдут
G72K
yaml ноды https://pastebin.com/PAkEnyNb yaml пода https://pastebin.com/hb9wqr4j Возможно я не вижу чего-то очевидного :)
На вид всё правильно. Такая ситуация возможна, если taint на ноду повесили уже после того, как там под запустился, но по таймстампам в ямлах видно, что это не ваш случай. У вас kube-scheduler точно нужной версии и точно в 1 экземпляре запущен? Попробуйте запустить его с —v=4 и посмотреть как он назначает под на эту ноду
G72K
В vault хорошо решена проблема курицы и яйца - "первого секрета", чтобы получить доступ в vault из пода. Поды аутентифицируются на kubernetes auth backend с помощью jwt сервис аккаунта (а сервис аккаунт в неймспейсе есть всегда), который vault проверяет у api сервера куба и выдает токен поду для похода в vault. В этом случае границей безопасности является неймспейс куба. В vault секреты раскладываются так же по неймспейсам. За секретами в vault ходит инит-контейнер, кладет их в volume, этот volume подмаунчивается в контейрены пода по одному и тому же пути. Можно написать приложение на go с клиентскими либами от vault, но можно делать простым скриптом на баше с curl. Всю мишуру с инит-контейнером, волюмами и т.д. удобно оформить в сабчарт helm, чтобы люди не копипастили одно и тоже и не запаривались как оно работает.
если из vault доставать уже готовые секреты (т.е. использовать только KV в нем), то Vault не нужен и встроенных secrets хватает
G72K
И файлики? Просто @gotmad описал выше подход. А вот с Secretes я как-то не придумал как такое реализовать...
Да, Kubernetes Secrets можно и как файлики, причем без всяких init containers, а лучше вообще как переменные окружения: https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables
Alexandr
https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod
Это типа содержимое файлика мы сохраняем в секрете. А потом секрет монтирует в контейнер? Но как я понял, секрет кубернетос просто кодирует в base64 и хранит это строкой... Просто вариант с vault+git+consul+init container выглядит убедительнее, чем простой секрет...
Kirill
что вы хотите сделать? Давайте начнем от цели
Отказоумтойчивый распределеный кэш в оперативке.
Logan
не проще использовать локальный кеш, на каждый под?
Logan
закон Амдаля учтен?
Kirill
Зачем локальный кэш если копий бэкенда 4(4 пода), 1 под положил, 2 достал. Неизвестно какой под будет отрабатывать в следующий раз
Kirill
На чтение и на запись
Logan
Зачем локальный кэш если копий бэкенда 4(4 пода), 1 под положил, 2 достал. Неизвестно какой под будет отрабатывать в следующий раз
за тем, что проще держать по одной локальной копии кеша для каждого процесса бэкенда, чем решать проблемы синхронизации и инвалидации единого пространства кеширования. 4 узла с возможностью писать в каждый – это будет нескончаемый, неостановимый поток боли
Kirill
Ну просто ваше решение бессмысленно при масштабировании бэкендов если их больше 1го. Это рабочая схема я ее использую года, но вне кубер. Сейчас подумал что неплохо бы занести.
Kirill
Допустим элементарная смс авторизация, 1 под отправил смс и сохранил код в кэш, 2 под уже в своём кэше не найдет код если запрос прилетит ему на подтверждение. Вот тут как раз нужен распределеный кэш.
Kirill
В целом я понял что с рэдис можно, но не так просто, буду пробовать.
Konstantin
Ребят, а никто не поднимал kubespray vagrant+hyperv?)
bebebe
Ребят, а никто не поднимал kubespray vagrant+hyperv?)
Я поднимал kubespray+hyperv случайно. Работало v1.8.0
Konstantin
Konstantin
так ты через вагрант или просто ансиблом?
Konstantin
Ансиблом
не, я вагрантом и без фиксиков никак, всё ещё правлю(
Konstantin
но это костыль
Logan
Допустим элементарная смс авторизация, 1 под отправил смс и сохранил код в кэш, 2 под уже в своём кэше не найдет код если запрос прилетит ему на подтверждение. Вот тут как раз нужен распределеный кэш.
нельзя хранить авторизацию в кеше, как вам вообще такое в голову могло прийти? Кэш – нетранзитивная помойка, сдохнет – не жалко, гарантии существования объекта в кеше нет и не может быть
Konstantin
Kirill
Он используется как кэш в основном
Dmitrii
Я из PostgreSQL тоже могу сделать кэш
Kirill
Для нескольких бэкендов
Kirill
Но он будет работать сильно хуже и медленнее
Kirill
В этом вся соль
A
если из vault доставать уже готовые секреты (т.е. использовать только KV в нем), то Vault не нужен и встроенных secrets хватает
Если нет задачи безопасно хранить секреты, то конечно, vault не нужен, секреты куба удобнее.
Dmitrii
Если убрать шутки, то если не хотите использовать partitioning чтобы hash шардировался в редисе, то можно использовать несколько имен сервисов редиса
Dmitrii
И по имени брать mod по userid
Alexandr
Если нет задачи безопасно хранить секреты, то конечно, vault не нужен, секреты куба удобнее.
Ну может для дев окружения подойдёт вариант с секретами куба. Вот прод уже можно через vault.
Roman
В целом я понял что с рэдис можно, но не так просто, буду пробовать.
У меня работает чарт хельмовый в трёх энвах, в кластере чисто под распределённую кэш. Чарт я правда немного переделал под statefullset для сетинелов
G72K
Если нет задачи безопасно хранить секреты, то конечно, vault не нужен, секреты куба удобнее.
"безопасно" понятние слишком широкое. на первый взгляд различие только в том, что секреты шифруются в месте хранения, а в etcd пока нет.
A
"безопасно" понятние слишком широкое. на первый взгляд различие только в том, что секреты шифруются в месте хранения, а в etcd пока нет.
С 1.7 api-сервер может уже хранить секреты в зашифрованном виде. Он сам их не хранит, понятное дело, но шифрует перед сохранением в etcd
Sergey
Оно из альфы вышло уже?
Grigorii
всем привет) вопрос к тем кто на AWS куб держит. Чем советуете бутстрапить кластер? Стоит ли использовать kops, или руками/kubeadm лучше? просто раньше держал куб только on premises, сейчас только начинаю с AWS дружить. Меня пугает все что делается "одним нажатием кнопки", кажется что ты тераяешь контроль над процессом)
Ivan
kops'ом можно сгенерить конфиг для терраформа и далее ворочать как угодно
CrusaderX
Юзаю копс больше года, не было нареканий
Grigorii
спасибо)
Grigorii
буду изучать)
Sergey
> база данных лол
Ну чисто технически это кейвелю сторедж с кучей моделей данных и хранит он их в озу, с возможностью скидывается на диск
Kirill
Kirill
https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/
Kirill
Архитектура всеми нами любимого стековерфло, у них редис как раз как кэш используется.