@kubernetes_ru

Страница 390 из 958
terry
19.01.2018
14:26:30
вы вообще читали, что я писал

Dmitry
19.01.2018
14:26:42
чем проще ты сделаешь тем лучше. одного дц тебе современного даже тиер 2-3 достаточно будет.

terry
19.01.2018
14:26:42
разные сервисы на разные континенты

и страны

Google
bebebe
19.01.2018
14:27:04
галактики

terry
19.01.2018
14:27:05
cdn само собой

это логично

Fike
19.01.2018
14:27:08
тогда непонятно, зачем их соединять в один кластер, если это принципиально разные сервисы

Dmitry
19.01.2018
14:27:19
воспользуйся для быстрой доставки CDN

terry
19.01.2018
14:27:46
воспользуйся для быстрой доставки CDN
ПО-ЭТОМУ, я и спросил о консультации

3дц это уход от идиотизма датацентра

облако тоже не панацея

Fike
19.01.2018
14:28:28
так, давайте на два шага назад

в этих трех дц один и тот же контент, или разный?

terry
19.01.2018
14:29:18
там не контент, а сервис который будет генерировать данные для юзеров

при этом реалтайм

cdn для сео не всегда ок

Google
Fike
19.01.2018
14:30:20
вопрос не про реалтайм, это одна сущность, которая синхронно у тебя должна работать в трех локациях, или все-таки разные сущности, которые между собой никак не связаны?

Sergey
19.01.2018
14:31:38
база на чем?

terry
19.01.2018
14:31:42
mongo

пока что она, в дальнейшем - может поменятся

Sergey
19.01.2018
14:33:57
монго плохой выбор для таких задачь. О риалтайме можно забыть.

Sergey
19.01.2018
14:35:38
но если иметь 2 статлес приложения, то зачем заморачиваться о одном сингл кластере. Несколько отдельных кластеров обеспечат гораздо большую надежность. Но уровень базы в любом случае нужно будет не на кубе делать

Sergey
19.01.2018
14:37:43
твое предложение?
при таких вводных, кубер кластер в одном реджине с распределением нод по AZ. (Aws\GKE) Базу если не менять - то можно mongomms cloud, если менять то взять что-то из того что предлагает клауд. Если своими силами - то все очень сильно зависит от логики приложения. Таже кассандра не везде пойдет.

делать мультиреджин кластера надо если ты работаешь на глобальный рынок и важна латенси.

Sergey
19.01.2018
14:39:52
ну вот и делай несколько отдельных кластеров. Да хоть мультиклауд. Это вообще всё фигня, кроме вопроса синхронизации данных между реджинами.

приложение пишет или читает из базы?

terry
19.01.2018
14:43:10
читать может конечно меньше, но писать будет 100%, каждый час и по многу

правда все зависит от аппетита юзера к данным

Виталий
19.01.2018
14:45:25
Всем привет! Кто настраивал мультимастер Kubernetes кластер скажите, правильно ли я понял логику всей схемы. Чтобы поднять мультимастер Kubernetes нужно настроить одну мастер ноду, далее скопировать с нее сертификаты на остальные 2 ноды. Далее, по стандартной схеме, настроить остальные два мастера на оставшихся двух нодах (при этом ключи на них генериться уже не будут, т.к. они есть) и в конце настроить реплику между всеми etcd который пуступает как БД для мастеров. В логическом завершении нужно на четвертой машине настроить баллансировщик (единую точку входа для всех 3-х мастер нод). Все правильно?

Google
Sergey
19.01.2018
14:48:02
Если много писать и важна латенси для мультиреджин, то похоже что стоит посмотреть на кассандру. Возможно, в комбинации с каким-то кешами. (может быть Ignite) Но здесь все сильно зависит от приложения и бизнес кейса. Не воспринимайте эти технологии как готовый рецепт.

Опять же, если данные не нужно синхронизировать между реджинами, то и монга может подойти.

Виталий
19.01.2018
14:53:48
Представлюсь. Я php backend разработчик. Хочу уметь создавать приложения работающие в облаке и легко масштаблируемые. Для этого я изучил Docker и сейчас учу оркестрацию. Выбрал Kubernetes в качестве откестратора. В планах хочу построить protuction HA кластер из 3 мастер нод и N миньйонов, а так же настроить CI\CD приложение через Gitlab CI. Наметил себе путь, а теперь активно курю доки и вкладываю в свою голову знания и понятия. Я из Украины, г Одесса. Про группу узнал из списка каналог на гитхабе и гугла. #whois

Mikhail
19.01.2018
14:55:42
Виталий
19.01.2018
14:57:10
так а где настраивается keepalived ? и какая логика с ним получается?

etcd сразу настраивается как единый кластер
а большая разница сразу настраивать или в будущем добавить мастеров?

Mikhail
19.01.2018
14:58:51
так а где настраивается keepalived ? и какая логика с ним получается?
держит один адрес который шарится между серверами. При падении одного - этот адрес зажигается на другом.

Dmitry
19.01.2018
14:59:22
@voskobovich есть ещё мнение что в случае мультимастера мастеров должно быть нечётное кол-во из-за (рас)синхронизации состояния. поправьте если я не прав.

Mikhail
19.01.2018
14:59:27
еще надо не забыть про флаги leader-elect в контрол плейне

Виталий
19.01.2018
14:59:32
держит один адрес который шарится между серверами. При падении одного - этот адрес зажигается на другом.
никогда с keepalived не работал, но слышал что это за зверь) мне не понятно на какой ноде его запускать?

@voskobovich есть ещё мнение что в случае мультимастера мастеров должно быть нечётное кол-во из-за (рас)синхронизации состояния. поправьте если я не прав.
я планирую 3 ноды))) самый распространенный вариант, да и в доке написано. А можно подробней почему именно нечетное и в сем проблема (рас)синхронизации состояния ?

Fike
19.01.2018
15:01:17
@voskobovich есть ещё мнение что в случае мультимастера мастеров должно быть нечётное кол-во из-за (рас)синхронизации состояния. поправьте если я не прав.
в распределенной системе (в данном случае etcd), при четном количестве кворум формируется таким образом, что последний узел становится немного лишним

Mikhail
19.01.2018
15:01:22
Виталий
19.01.2018
15:03:14
не делал так, обычно сразу кластер поднимал
я правильно понял, что keepalived это тоже кластер из 3 демонов на всех нодах? Но тогда не понятно где же та самая единая точка выхода.

Fike
19.01.2018
15:03:55
я планирую 3 ноды))) самый распространенный вариант, да и в доке написано. А можно подробней почему именно нечетное и в сем проблема (рас)синхронизации состояния ?
В случае любого разделения сети формируется новый кластер из оставшихся узлов. Один из вариантов разделения сети - это просто потеря связи между двумя участками кластера, и в таком случае возникает проблема двойного авторитета. Из-за этого та часть, в которой меньшинство, должна потухнуть до воссоединения, а большинство - продолжить работу. Если мы берем нечетное количество нод, скажем пять - большинством является три ноды. Если мы возьмем шесть, то большинством будет четыре ноды - и получается, что вот эта шестая нода не дает нам никакого преимущества, потому что больше двух нод мы потерять все равно не можем.

Fike
19.01.2018
15:06:46
Останется четыре, они видят друг друга и продолжают работу. Если эта нода не умерла, а оказалась отрезанной от сети, то она увидит, что товарок больше нет и откажется выполнять запросы.

Google
Fike
19.01.2018
15:07:39
Конкретно в etcd внутри сидит протокол raft, который просто не считает операцию совершенной, пока ее не приняло большинство участников кластера, поэтому там это вообще сразу из коробки (правда с чтениями они один раз все же профакапились, но это пофиксили).

Виталий
19.01.2018
15:09:02
Конкретно в etcd внутри сидит протокол raft, который просто не считает операцию совершенной, пока ее не приняло большинство участников кластера, поэтому там это вообще сразу из коробки (правда с чтениями они один раз все же профакапились, но это пофиксили).
аааа, это функция самого ПО. То есть если ПО умеет соединяться в кластер, то на его уровне и реализуется логика контроля совершенности операции. Например в etcd пришел запрос на запись значения, нода его пишет себе и передает другим. И пока другие не примут и не сохранят у себя то операция не считается завершенной. Так?

Виталий
19.01.2018
15:13:05
http://img2.ph.126.net/knqvT-s-s-Ap6TGBblmu4g==/6630875351165754278.jpg вот примерно что это такое
Я понял логику, но не понял как это спасает от единой точки отказа? Ведь все равно есть VIP который принимает запрос и дальше решает кому его отдать (кто работает сейчас). Т.е. в тако схеме ВИТ и есть точка отказа.

Andor
19.01.2018
15:13:20
он дублируется

Fike
19.01.2018
15:13:26
аааа, это функция самого ПО. То есть если ПО умеет соединяться в кластер, то на его уровне и реализуется логика контроля совершенности операции. Например в etcd пришел запрос на запись значения, нода его пишет себе и передает другим. И пока другие не примут и не сохранят у себя то операция не считается завершенной. Так?
Да, примерно так. На самом деле там очень большое пространство для работы и возможностей прострелить ногу, можно почитать серию jepsen у афира, он в процессе объяснения самих инструментов еще и объясняет сам класс возможных проблем.

Andor
19.01.2018
15:14:06
call me maybe

Admin
ERROR: S client not available

Виталий
19.01.2018
15:14:16
Andor
19.01.2018
15:14:26
один из лучших циклов на эту тему

Fike
19.01.2018
15:19:00
aphyr.com/tags/jepsen

Виталий
19.01.2018
15:19:16
Так, получается что я все понял правильно кроме того, что баллансировку между нодами делает keepalived. Etcd можно как сразу в кластер соединять, а можно и потом прикрутить реплики.

Mikhail
19.01.2018
15:19:27
502 Bad Gateway ?

Fike
19.01.2018
15:19:29
jepsen.io

Dmitry
19.01.2018
15:20:17
https://webcache.googleusercontent.com/search?q=cache:qKqUKdvRHesJ:https://aphyr.com/tags/jepsen+&cd=14&hl=en&ct=clnk&gl=ru&lr=lang_en%7Clang_ru

Виталий
19.01.2018
15:20:55
etcd можно вообще с одного хоста начинать, увеличить кол-во нод в кластере недолго
ну, ты имеешь ввиду начать с одного мастера? а потом по мере надобности добавлять еще?

Andor
19.01.2018
15:24:56
конечно

Google
Andor
19.01.2018
15:25:04
ну это так себе практика, но работать будет

если конечно этот самый 1 мастер не сдохнет по пути :)

Виталий
19.01.2018
15:29:58
ну для прода надо сразу поднимать 3 мастера))

Andor
19.01.2018
15:33:49
не мастера, а инстанса етцд

Виталий
19.01.2018
15:33:51
Ух, нашел про keepalived https://habrahabr.ru/company/netangels/blog/326400/ почитал. Сума сойти какая схема)) но круто что нет точки отказа. Спасибо!

Линник
19.01.2018
15:34:20
Вопрос: kubectl create -f https://k8s.io/docs/tasks/debug-application-cluster/counter-pod.yaml kubectl logs counter Консоль висит и логов нет, подскажите куда смотреть, что не так может быть?

Виталий
19.01.2018
15:34:41
я так понимаю, что keepalived и установка виртуального ИП делается на мастер нодах, верно?

Dmitry
19.01.2018
15:40:32
как вариант, вместо keepalived можно на каждом воркере запустить локальный прокси (nginx/haproxy) который будет раскидывать все запросы к апи серверу(ам) (идущие на 127.0.0.1 на воркере)

Линник
19.01.2018
15:45:43
Что в дескрайбе пода?
# kubectl describe pod counter Name: counter Namespace: default Node: domain/172.27.39.28 Start Time: Fri, 19 Jan 2018 18:32:39 +0300 Labels: <none> Annotations: <none> Status: Running IP: 10.244.0.13 Containers: count: Container ID: docker://7049fcc5911a6c7a5dbe182bc69351e16dbb1d9727f502e6c41dc61d05cfe0fb Image: busybox Image ID: docker-pullable://busybox@sha256:ac2fc418f3348815e68e266a5aa1b60bc522581c96964912560a0baacc4f5c06 Port: <none> Args: /bin/sh -c i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done State: Running Started: Fri, 19 Jan 2018 18:32:57 +0300 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-4pqlv (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-4pqlv: Type: Secret (a volume populated by a Secret) SecretName: default-token-4pqlv Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.alpha.kubernetes.io/notReady:NoExecute for 300s node.alpha.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned counter to domain Normal SuccessfulMountVolume 11m kubelet, domain MountVolume.SetUp succeeded for volume "default-token-4pqlv" Normal Pulling 10m kubelet, domain pulling image "busybox" Normal Pulled 10m kubelet, domain Successfully pulled image "busybox" Normal Created 10m kubelet, domain Created container Normal Started 10m kubelet, domain Started container

Dmitry
19.01.2018
15:46:43
ссылочку не знаю, схема такая: есть воркер, на нём стоит nginx, слушает на каком то порту на 127.0.0.1, и проксирует все запросы на бэкенды в качестве которых API сервера. компоненты куба-воркера (кубелет и кубе-прокси) ходят в 127.0.0.1 вместо адресов API серверов

Виталий
19.01.2018
15:51:08
ссылочку не знаю, схема такая: есть воркер, на нём стоит nginx, слушает на каком то порту на 127.0.0.1, и проксирует все запросы на бэкенды в качестве которых API сервера. компоненты куба-воркера (кубелет и кубе-прокси) ходят в 127.0.0.1 вместо адресов API серверов
То есть ты предлагаешь на minion серверах ставить nginx который будет проксировать запросы к АПИ через себя? Типа если у меня 10 minion`ов то на каждом nginx в котором прописаны все бекенды (мастер ноды) ?

Fike
19.01.2018
15:51:28
# kubectl describe pod counter Name: counter Namespace: default Node: domain/172.27.39.28 Start Time: Fri, 19 Jan 2018 18:32:39 +0300 Labels: <none> Annotations: <none> Status: Running IP: 10.244.0.13 Containers: count: Container ID: docker://7049fcc5911a6c7a5dbe182bc69351e16dbb1d9727f502e6c41dc61d05cfe0fb Image: busybox Image ID: docker-pullable://busybox@sha256:ac2fc418f3348815e68e266a5aa1b60bc522581c96964912560a0baacc4f5c06 Port: <none> Args: /bin/sh -c i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done State: Running Started: Fri, 19 Jan 2018 18:32:57 +0300 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-4pqlv (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-4pqlv: Type: Secret (a volume populated by a Secret) SecretName: default-token-4pqlv Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.alpha.kubernetes.io/notReady:NoExecute for 300s node.alpha.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 11m default-scheduler Successfully assigned counter to domain Normal SuccessfulMountVolume 11m kubelet, domain MountVolume.SetUp succeeded for volume "default-token-4pqlv" Normal Pulling 10m kubelet, domain pulling image "busybox" Normal Pulled 10m kubelet, domain Successfully pulled image "busybox" Normal Created 10m kubelet, domain Created container Normal Started 10m kubelet, domain Started container
Логгинг в кластере никак не конфигурировался, все "из коробки"?

Линник
19.01.2018
15:58:17
да, все из коробки
Нашел файлик с логами: tail /var/log/pods/fb9ebd51-fd2d-11e7-9877-fa163e595e88/count_0.log Он пишется, не понятно только почему команда не показывает их

Vik
19.01.2018
16:16:59
ребят, а кто-то делать что-то Kubernetes + Kerberos?

Pavel
19.01.2018
16:43:40
честно, ничего не понял)) знаете где сылочку взять для почитать описание схемы?
Вот тут можно посмотреть реализацию. Только нужно по ансиблу полазить. Из опыта этот вариант лучше чем вррп на мастерах

Страница 390 из 958