
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
а чёрной магией кто-нибудь занимается?
Типа оркестрации кластера кубера в ранчере или как-то ещё

Admin
ERROR: S client not available

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

Google

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

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
остальное напильником