@kubernetes_ru

Страница 307 из 958
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
Доброго времени суток. У меня pet-стартап и я пытаюсь понять нужен ли мне kubernetes в данный момент. Я застопорился на вопросе: нормально ли крутить k8s на vps’ках? Или смысл в использовании k8s начинается когда уже есть минимум 3 физических сервера? Я заранее извиняюсь за столь глупый вопрос, но ответ на него даст мне понять стоит ли копать дальше. Сама потребность в k8s возникла из-за того что пришло время внедрять CI/CD. Посмотрел в сторону gitlab и выяснил что он вроде как дружит k8s. Плюс расчитываю сэкономить на количестве арендуемых VPS’ок, т.к сейчас беру на каждый микросервис по VPS’ке, в итоге имею кучу виртуалок с загрузкой ЦП чуть выше нуля. Ну и еще вопрос. Что делать с БД? Думаю что никто БД не держит в контейнерах. Как в этом случае поступают? БД живет на отдельной машине?
Крутить кубер на впс нормально. Не обязательно иметь физические сервера. Единственное что было бы хорошо - иметь три впс для etcd но на начальном этапе можно мастер и etcd поместить на 1 впс. Гитлаб умеет кубер да, у нас он работает. Кубер мало создаёт накладных расходов.

Google
Mikhail
29.10.2017
09:08:32
Если у вас почти не используется цпу на каждой впс- тем более, но там надо учитывать и память, конечно.

Про дб - по моему дб не очень безопасно держать под кубером. Особенно если у вас нет хорошего опыта с распределёнными хранилищами.

Для лучшего распределения подов по впс желательно указывать лимиты на цпу и память в деплой файлах.

Но так же вам надо будет организовать сеть для кубера. Флаллель и тд.

Ilia
29.10.2017
09:42:42
Крутить кубер на впс нормально. Не обязательно иметь физические сервера. Единственное что было бы хорошо - иметь три впс для etcd но на начальном этапе можно мастер и etcd поместить на 1 впс. Гитлаб умеет кубер да, у нас он работает. Кубер мало создаёт накладных расходов.
спасибо что откликнулись! буду дальше знакомиться с технологией. По поводу БД вычитал что в докере не держат, даже при использовании k8s. Наткнулся на эту ссылку с вопросом как быть БД и k8s https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

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

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

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

Ilia
29.10.2017
10:32:27
Бд должна быть отдельным отказоустойчивым сервисом как и сторадж
ее не стоит вообще c k8s связывать? так я и думал

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
если что, в postgres 10 есть логическая репликация из коробки.
Ну занесли пглодджикал во внутрь, что то еще изменилось ?

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
принёс))) https://github.com/kubernetes/kubernetes/blob/master/cluster/saltbase/salt/kubelet/kubeconfig он пустой и добавлен два года назад)))
https://github.com/kelseyhightower/kur/blob/master/kubeconfigs/kubelet.kubeconfig сдаётся мне это тот файл что лежит у вас в хом дире .kube/

Anton
30.10.2017
08:19:25
вобщем если хотите настоящий HA то не ставьте этот параметр и терпите вечный трафик в etcd на обновление этой записи каждые N секунд. в противном случе если apiserver упадет (или будет выключен для обновления скажем), то 1/X коннектов к apiserver будут с ошибкой, где X - количетсво apiservers
думаю над --apiserver-count для kube-apiserver. как часто apiserver будет замещать чужой адрес из kubernetes.svc? мутить еще один балансировщик для apiserver не хочется. вроде отлично иметь N endpoints с мультимастером, а вроде и не очень, если один выпал.

есть такой вмердженный 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, например. или последовательного деплоя (новая конфигмапа со сгенерированным лейблом, потом передеплой деплоймента с новой конфигмапой). как канонично решаются такие проблемы?

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

Sergey
30.10.2017
11:01:05
возможно будет интересно посмотреть на helm
уже. он решает из этого фактически только шаблонизацию.

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

Zon
30.10.2017
11:08:18
а если ещё прибавить CD? (Например гитлаб). Как обновлять образы?
в cd для часто меняющихся апп - helm upgrade --install --wait --namespace $NAMESPACE -f values/$ENV/values.yaml -f values/$ENV/secrets.enc --set app.image.tag=$GIT_SHA1 $CHART_NAME ./

Айбелив
30.10.2017
11:09:04
в cd для часто меняющихся апп - helm upgrade --install --wait --namespace $NAMESPACE -f values/$ENV/values.yaml -f values/$ENV/secrets.enc --set app.image.tag=$GIT_SHA1 $CHART_NAME ./
да это понятно, но откуда брать GIT_SHA1, если манифесты и приложение — две разные репы?

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
CD система дергает helm, в нашем случае CircleCI
и чарты у вас пишут разрабы, а конфиги - те кто отвечает за деплой?

грубо, если

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

Айбелив
30.10.2017
11:36:23
я вот и сам хочу спросить, слышал, что такое используется

меня интересует обновление кластера на бареметалах

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

Anton
30.10.2017
12:05:20
так попробуй на стенде сначала =)

предположу что тебе придется сделать - напильник, вернуть все к состоянию, которое знакомо kubeadm, апдейтить, и + напильник

Pavel
30.10.2017
12:41:53
Господа, с чего начать переход со сворма на кубер? Исходные данные - сворм из 10 машин, 3 из них мастеры (менее нагруженные, но на них тоже по одному-два докер образа крутится)
Полагаю, что начать следует с поднятия etcd кластера на бывших мастер-нодах. После поднять overlay сетку, flannel видится самым распространённым решением. Адепты кубера, подскажите плз, на верном ли я пути?

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
kubeadm бета, и не совсем понятно что он делает внутри. Плюс нет гарантий что без косяков обойдётся
kubeadm вполне норм утилита для поднятия, но одного мастера + много воркеров

остальное напильником

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