
Paul
28.10.2017
20:28:43


Ilia
29.10.2017
01:44:11
Доброго времени суток. У меня pet-стартап и я пытаюсь понять нужен ли мне kubernetes в данный момент.
Я застопорился на вопросе: нормально ли крутить k8s на vps’ках? Или смысл в использовании k8s начинается когда уже есть минимум 3 физических сервера? Я заранее извиняюсь за столь глупый вопрос, но ответ на него даст мне понять стоит ли копать дальше.
Сама потребность в k8s возникла из-за того что пришло время внедрять CI/CD. Посмотрел в сторону gitlab и выяснил что он вроде как дружит k8s. Плюс расчитываю сэкономить на количестве арендуемых VPS’ок, т.к сейчас беру на каждый микросервис по VPS’ке, в итоге имею кучу виртуалок с загрузкой ЦП чуть выше нуля.
Ну и еще вопрос. Что делать с БД? Думаю что никто БД не держит в контейнерах. Как в этом случае поступают? БД живет на отдельной машине?
Заранее извиняюсь за то что я написал выше и прошу не пинать дурака. Спасибо.

Mikhail
29.10.2017
09:07:41

Google

Mikhail
29.10.2017
09:08:32
Если у вас почти не используется цпу на каждой впс- тем более, но там надо учитывать и память, конечно.
Про дб - по моему дб не очень безопасно держать под кубером. Особенно если у вас нет хорошего опыта с распределёнными хранилищами.
Для лучшего распределения подов по впс желательно указывать лимиты на цпу и память в деплой файлах.
Но так же вам надо будет организовать сеть для кубера. Флаллель и тд.

Ilia
29.10.2017
09:42:42
Вопрос снят. Подсказали ссылочку почитать про StatefulSets https://habrahabr.ru/company/flant/blog/328756/

Gleb
29.10.2017
09:54:28
https://docs.tarmak.io/en/latest/ кто что может сказать ?

Paul
29.10.2017
10:26:56

Gleb
29.10.2017
10:31:29

Ilia
29.10.2017
10:32:27

Gleb
29.10.2017
10:42:40
ее не стоит вообще c k8s связывать? так я и думал
Возможно это может управляться кубернетисом. Но такие сервисы как бд и стораджи в любом случае должны быть сами по себе очень отказоустойчивыми и не зависеть от того где и как приложения работают. В идеале у тебя сторадж может быть доступен больше чем для одно кластера куба , но тут уже вопрос как организовать всё. Ясное дело можно забить на то как принято делать правильные микросервисы и самому по граблям походить

Alexander
29.10.2017
11:00:04
если что, в postgres 10 есть логическая репликация из коробки.

Gleb
29.10.2017
11:54:22

Google

Alexander
29.10.2017
11:58:00
не знаю, я не смотрел особо. просто вставил ремарку, вдруг кто-то не слышал :)

Ivan
29.10.2017
21:31:11
Всем привет!
А подскажите пожалуйста, как найти описание, как правильно запускать kubelet в новой версии (1.8) ?
А то я обновился и выяснилось, что ключи не подходят.
Нашёл описание ключей
https://kubernetes.io/docs/admin/kubelet/
и выяснилось, что ключа "--api-servers" больше нет ))
там же нашёл, что теперь есть ключ "--kubeconfig string"
Но его описание крайне скудно:
Path to a kubeconfig file, specifying how to connect to the API server.
(default "/var/lib/kubelet/kubeconfig")
Подскажите, где найти (и как правильно искать) синтаксис этого файла?
и "--register-schedulable" ключа тоже походу больше нет ))

Mikhail
29.10.2017
21:36:55
Поиск этого файла по репе кубера не принёс результатов?

Ivan
29.10.2017
21:42:21
принёс)))
https://github.com/kubernetes/kubernetes/blob/master/cluster/saltbase/salt/kubelet/kubeconfig
он пустой и добавлен два года назад)))

Mikhail
29.10.2017
21:57:27

Ivan
29.10.2017
21:58:34

Anton
30.10.2017
08:19:25
есть такой вмердженный pr https://github.com/kubernetes/kubernetes/pull/51698
который похоже только в 1.9 появится.
который добавляет опцию
--alpha-endpoint-reconciler-type=(master-count, lease, none) (default
"master-count"). The original reconciler is 'master-count'. The 'lease'
reconciler uses the storageapi and a TTL to keep alive an endpoint within the
`kube-apiserver-endpoint` storage namespace. The 'none' reconciler is a noop
reconciler that does not do anything. This is useful for self-hosted
environments.
которая возможно все приведет в порядок c lease reconciler


Sergey
30.10.2017
10:58:40
господа, а есть работающие бест-практисы организации манифестов для kubernetes в репозитории и их последующего деплоя?
наивный подход "один неймспейс - один репозиторий - деплой всегда через kubectl apply -f /path/to/root --recursive" становится неудобным и странненьким достаточно быстро.
сразу начинает хотеться добавить шаблонизаторов в configMap, например. или последовательного деплоя (новая конфигмапа со сгенерированным лейблом, потом передеплой деплоймента с новой конфигмапой).
как канонично решаются такие проблемы?

Zon
30.10.2017
11:00:52

Alex
30.10.2017
11:00:57
у нас 2 k8s кластера dev и prod. манифесты лежат в одной репе, дерево: dev/namespace/сервис/манифесты

Sergey
30.10.2017
11:01:05

Alex
30.10.2017
11:01:54
+ внутри namespace лежит манифест для namespace и role

Zon
30.10.2017
11:02:56
уже.
он решает из этого фактически только шаблонизацию.
Мы делаем примерно так
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── values
│ ├── env1
│ │ ├── secrets.enc
│ │ └── values.yaml
│ └── env2
│ ├── secrets.enc
│ └── values.yaml
└── values.yaml

Sergey
30.10.2017
11:04:31
я вот нашел еще https://github.com/deepmind/kapitan

Айбелив
30.10.2017
11:06:38

Sergey
30.10.2017
11:07:08

Zon
30.10.2017
11:08:18

Айбелив
30.10.2017
11:09:04

Google

Zon
30.10.2017
11:09:39
для тех, у кого версия жестко зашита и меняется вручную, вроде прометея, просто values поменять

Sergey
30.10.2017
11:09:51
зачем?
штобы деплой в один клик
точнее, в один пуш

Zon
30.10.2017
11:10:12
в смысле - зачем две разные репы?

Айбелив
30.10.2017
11:10:40

Sergey
30.10.2017
11:10:55

Zon
30.10.2017
11:11:12
инфра компоненты - в одну репу кучей слиты, а девелоперские репы содержат их чарты, чтоб девелоперы могли их менять
что никак не влияет на структуру самого чарта

Sergey
30.10.2017
11:13:01
вот есть реп, где куча вызовов чартов с кучей конфигов (values.yaml)
как это деплоится?

Zon
30.10.2017
11:13:58
CD система дергает helm, в нашем случае CircleCI
До shared чартов и нормального наследования мы пока не особо дошли
собственно строчка выше - это почти прямая копипаста из конфига CircleCI

Айбелив
30.10.2017
11:17:23
всё-таки одна репа? (хельм + приложение)

Zon
30.10.2017
11:17:44

Sergey
30.10.2017
11:17:52
грубо, если

Zon
30.10.2017
11:19:56

Google

Zon
30.10.2017
11:21:03
Задача - дать разрабам возможность максимально независимо от инфра команды выкатывать новые приложения

Pavel
30.10.2017
11:22:28
Господа, с чего начать переход со сворма на кубер?
Исходные данные - сворм из 10 машин, 3 из них мастеры (менее нагруженные, но на них тоже по одному-два докер образа крутится)
и что в контексте кубера (или данного чата) понимается под baremetal?

Anton
30.10.2017
11:27:40
baremetal - это не aws\azure\gke
self managed, где нет api для управления обвязками типа балансировщиков

Pavel
30.10.2017
11:32:07
ну вот оно по ходу)
10 машин, где нет никакой магии кроме доступа до них. Ну и айпишник внешний на всё это дело

Айбелив
30.10.2017
11:34:38
а чёрной магией кто-нибудь занимается?
Типа оркестрации кластера кубера в ранчере или как-то ещё

Evegeniy
30.10.2017
11:35:11

Айбелив
30.10.2017
11:36:23
я вот и сам хочу спросить, слышал, что такое используется
меня интересует обновление кластера на бареметалах
понятно, что вручную всегда можно сделать. Ансиблом вроде тоже тривиально.
Мой кластер поднят через kubeadm + напильник = HA. Но kubeadm всё равно страшно использовать для обновлений

Anton
30.10.2017
12:05:20
так попробуй на стенде сначала =)
предположу что тебе придется сделать - напильник, вернуть все к состоянию, которое знакомо kubeadm, апдейтить, и + напильник

Pavel
30.10.2017
12:41:53

Anton
30.10.2017
12:50:39
я думаю не очень идея смешивать
поскольку докер точно придется из swarm выводить, лучше все с нуля начать

Pavel
30.10.2017
12:51:12
Что именно?
Докер то точно из сморма будет выведен

Anton
30.10.2017
12:51:36
k8s & swarm, flannel & docker overlay

Pavel
30.10.2017
12:52:03
Разве не вариант поднимать потихоньку кубер, на сворме оно пока крутится

Google

Pavel
30.10.2017
12:52:08
Потом разом переключить
Даунтайма нельзя допустить. Понятно, что без него совсем не получится, но надо обеспечить самый минимальный хотя бы
Посему и собрался заводить параллельно

Anton
30.10.2017
12:53:35
я думаю уже на этапе вывода докера из swarm начнется даунтайм
потому что после etcd нужно запускать kubelet, который должен будет запустить еще свои компоненты в контейнерах.
и не думаю что это получится при живом swarm

Pavel
30.10.2017
12:54:57
ну там попроще, прибить все стеки, все сервисы и прочее подобное, прибить сетки, прибить ноды и сам сворм. Это всё сделается чуть ли не в одну строчку и весьма быстро
К этому времени кубер желательно чтобы был хотя бы поднят, мастеры и ноды руг о друге знали и были готовы к поднятию подов

Anton
30.10.2017
12:55:42
не выйдет так думаю

Pavel
30.10.2017
12:56:18
Принято, спасибо. Буду выбивать согласования на даунтайм.
А по подходу - всё ли верно? etcd-кластер, flannel сначала?

Anton
30.10.2017
12:57:16
я вообще негативщик. я думаю на работающем сворме kubelet ничего не запустит

Pavel
30.10.2017
12:58:20
тогда какой самый нормальный подход в вашем понимании? Прибиваем сворм (полностью) - далее что делать?

Anton
30.10.2017
12:58:46
решаем как будем деплоить к8с
kubespray для своего железа, или kubeadm, или вручную

Pavel
30.10.2017
12:59:12
Вручную
kubeadm бета, и не совсем понятно что он делает внутри. Плюс нет гарантий что без косяков обойдётся

Айбелив
30.10.2017
13:02:12
остальное напильником