
Mikhail
13.09.2018
13:25:31
буду пересобирать значит

Andrey
13.09.2018
13:26:19
Просто советы можно давать и диагностику проводить, если есть полный доступ ко всем компонентам. Когда они хитро скрыты облачными дядями, то выбора нет.

Mikhail
13.09.2018
13:29:44
согласен

Google

Ivan
13.09.2018
13:36:02
EKS как и практически все managed-компоненты в AWS - лютое поделие, пригодное разве что для хобби-проектов или MVP

Anton
13.09.2018
13:56:52
Привет. У меня есть кластер базы данных, и DNS сервер - который резолвит адреса нод кластера. Как мне передать эти зоны kubedns? (базы вне куба:)

Pavel
13.09.2018
14:05:16

Anton
13.09.2018
14:09:00
помоему это немного не то...
поисню,
у меня кластер постгри, и настроен failover - dns переключает A запись поддомена на слэйв ноду которая стала мастером, если ведущий мастер зафакапился...
по этому примеру, мне нужно менять не А запись, а запись внешнего ip для баз в прокси куба, так?

Pavel
13.09.2018
14:16:37
какой прокси?
Все что просиходит так это вмемсто ip my-service.prod.svc.CLUSTER вытается то что будет отрезолвлено для записи my.database.example.com
тут больше вопрос как часто запись будет обновляться

Anton
13.09.2018
14:22:16
не часто - это на случай факапа... но реакция должна быть мгновенной...
я кажется понял - почитаю внемательнее.. спасибо!

Pavel
13.09.2018
14:23:05
dns и мгновенно - это взаимоисключающие параметры

Anton
13.09.2018
14:23:15
)))

Pavel
13.09.2018
14:24:24
я бы воспользовался keepalived или подобмнымм и просто перетаскивал ip

Александр
13.09.2018
14:26:23
а что, господа, кого уже кусала https://blog.quentin-machu.fr/2018/06/24/5-15s-dns-lookups-on-kubernetes/
как побеждали? что-то ни один workaround (и с шейпингом) не помогает

DASTAN
13.09.2018
14:39:47
@SinTeZoiD урааа!)

Google

Andrey
13.09.2018
14:40:37

DASTAN
13.09.2018
14:42:57
Ребят, не смог дашборд открыть для внешки через kubectl proxy, сделал через NodePort
Я новичок в кубернетес
Не ругайте сильно
Получается на мастере запустил установку кубернетес-дашборд, а локально запустил kubectl proxy, по идее я как то должен локально указать что общаюсь с мастером по такому то адресу, я правильно понимаю? Если так, то как и где указывать?

Andrey
13.09.2018
14:47:35

DASTAN
13.09.2018
14:51:14

Andrey
13.09.2018
14:51:24

Александр
13.09.2018
14:52:35

Roman
13.09.2018
14:54:06
kubespray?
Норм инструмент? Тоже на него натыкался.

Andrey
13.09.2018
14:54:21

Roman
13.09.2018
14:54:45
Спс

DASTAN
13.09.2018
15:06:11

Evgeniy
13.09.2018
15:08:50

Andrey
13.09.2018
15:09:14

Yaroslav
13.09.2018
15:28:13
Привет всем, товарищи девопсы просветите на тему репликации монги в k8s:
На данный момент есть монга которая крутится в проде : 1 инстанс
Поступила задача настроить ее репликацию
для развертывания используется helm
Для выполнения задачи нужно:
1) Убрать deployment конфиг
2) Добавить storageClass (Он обязательный ? )
3) Добавить Headless - обычный Service который предоставляет уникальный адрес без которого приложениям придется подключаться к репликам по отедльности ?
4) добавить StatefulSet
После применения этих конфигов существующий инстанс монги удалится и поднимутся 3 реплики + 1 хедлесс монга
Я правильно описал процесс ?

Andrey
13.09.2018
15:30:29
есть готовый чарт с репликацией
https://github.com/helm/charts/tree/master/stable/mongodb-replicaset

Yaroslav
13.09.2018
15:36:09
Эт очень круто, спасибо. сейчас изучу))
Но то что я написал верно ?

Google

Andrey
13.09.2018
15:40:53
не спец в монге. Я бы просто сделал дамп, поднял репликасет, залил туда дамп, поправил бы connection string в аппликуе и всё

Mikhail
13.09.2018
15:42:45
велл, ну не все так просто
насчет монги
данные рассинкаются, пока твой дамп накатится. Даже если не дамп, даже если со снапшота диска на облаках восстановишься

Andrey
13.09.2018
15:44:52
разумеется. если нужно всё делать по уму, либо устраиваем даунтайм, либо открываем доки монги и включаем мозг. Задача стандартная, наверняка есть решение

Mikhail
13.09.2018
15:45:11
там примерно так можно сделать;
1. Поднял на кубере все ноды
2. Подключил их к прод-кластеру как реплики, можно без чтения в приложения
3. Подключил реплики к приложению
4. Перевыбрал мастера на ноду из кубер-кластера
5. Отсоединяешь старый кластер
Как-то так, но там без даунтайма можно в принципе
и мэйк шур, что чарт подразумевает концепцию hidden-реплики, чтобы с прода голого бэкапы не снимать; ну это очевидно наверно

Mikhail
13.09.2018
15:49:21
а как мейк шур что headless service на primary mongo указывать будет? писать же только в primary даст, или включать все реплики в connection string

Mikhail
13.09.2018
15:50:16
монга не мускуль, у нее нет фиксированного мастера в реплика сете, он постоянно меняется
если дравйер умный, то он будет спрашивать через фиксированный интервал
если тупой, то будет спрашивать каждый раз
с пыхой так раньше было по крайней мере

Yaros
13.09.2018
15:59:41
народ, может кто подсказать как у редиса с репликацией? Меня убеждали, что он не может в несколько мастеров с репликацией между ними. Что мол мастер нод падает и все, отказ редиса полный идет. Я не специалист по редису, но догадываюсь, что возможно человек просто не знает чего-то. Смотрел на redis sentinel он не решает проблему? Там просто не совсем понятно написано можно ли сделать несколько мастер узлов, разнести их и настроить между ними репликацию данных.

Fike
13.09.2018
16:02:42
У редиса все плохо. Формально умеет, на практике используйте нормальные инструменты.

Mikhail
13.09.2018
16:05:32
есть либо master-slave, где с падением мастера падает все, либо redis-cluster с делением на шарды
redis-cluster хорошо работает, но с ним то ли не все драйверы работают, либо все, но нужно будет переписывать логику приложения, если присутствует
redis-sentinel это уже легаси вроде бы, redis-cluster решает эту задачу
multi-master как такового не существует

Google

Fike
13.09.2018
16:11:18
там вроде была координация запросов, но опять же, если вы хотите уверенности в завтрашнем дне, не используйте его вообще

Andrey
13.09.2018
16:15:43
#helm
у helm есть возможность создать ресурс только при начальном развёртывании? Usecase следующий: нужно создать configmap с дефолтным конфигом приложения, но потом перестать его контролировать. Аналог в rpm - это файлы конфигурации.

Evgenii
13.09.2018
16:21:45
нет

Andrey
13.09.2018
16:24:13
спс. значит вручную буду делать

Алексей
13.09.2018
17:18:40
А зачем вам редис?

Fike
13.09.2018
17:29:18
редис не нужен [x]

Viktor
13.09.2018
17:30:07
А что нужно?

Bro
13.09.2018
17:30:57
мемкэшед какой-нибудь?

Fike
13.09.2018
17:32:27
(ща меня как следует отдуасят) аэроспайк, они вроде как вернули возможность задавать Node ID самостоятельно

Psy
13.09.2018
17:32:31
Если нужен прям кластер, то лучше уж каучбэйс какой нибудь

Igor
13.09.2018
17:36:59

Andrey
13.09.2018
17:42:06
А еще можно tarantool vshard

Fike
13.09.2018
17:45:39

Igor
13.09.2018
17:46:18

Fike
13.09.2018
17:47:31
а как его в стейтфул сет иначе превратить

Igor
13.09.2018
17:52:36
а как его в стейтфул сет иначе превратить
Хм. Надо попробовать будет поигратся в кубере. Вроде не играло особой роли при масшатибровании клсатера. С мешем просто имена генериш, с мультикастом само. Конечно может генерится мусор из мертвых нод но новые со старыми данными должны втыкатся без проблем.

Fike
13.09.2018
17:54:46
ну это только если его как ин-мемори использовать

Ivan
13.09.2018
18:26:39
А там гляди и патч в ядро дотащат

Александр
13.09.2018
18:29:17
Везёт. А нам нужон

Google

Александр
13.09.2018
18:29:50
Буду dnsmasq на каждую ноду костылить. Другого выхода нет
Скоро рассвет

Ivan
13.09.2018
18:30:09
Я б unbound закостылил
Он умеет не давать кэшу протухать

Александр
13.09.2018
18:31:45
Не осознаю масштаба трагедии

Let Eat
13.09.2018
19:05:54

Andrey
13.09.2018
19:08:48
в чужой монастырь со своим уставом не лезут, конечно, но мне просто не нравится идеология хелма, который берёт на себя больше задач, чем положено пакетному манагеру и шаблонизатору. Хранение конфигураций в values (типа кредов к базе и тд) - как по мне - плохой подход.
оно с configmap в secrets и то недавно перелезло
подход с job в pre-install хуке годный, но сложный и неочевидный. Я лучше буду вручную создавать configmap и передавать её как параметр через values