
Igor
25.06.2017
14:40:03
Helm - активно развивающаяся утилита в состоянии постоянного совершенствования. Кто-то предпочитает свой велосипед "более надёжный". Кто-то активно контрибьютит в Helm, чтобы обеспечить свои хотелки. У каждого свой выбор. Для гарантии релизов нужно побольше делать вклад в развитие helm.InstallWait (--wait option)
Deis пользуется helm :)


Andrey
25.06.2017
14:50:54
> Helm - активно развивающаяся утилита в состоянии постоянного совершенствования.
ну кто же спорит, молодцы парни... я ведь не говорю что это какашка :) тем более сам пользуюсь за отсутствием альтернатив
но вот пример: я изменил конфиг (лимит ресурсов), сделал "helm update" и ожидал что под перезапустится с измененным лимитом... этого не произошло, понятно что сам дурак но я щас про ожидания от утилиты и фактическое ее действие
к'мон, если отбросить некоторые юзкейсы вещи то в целом какая разница где конфиги епошить: в формате для kubectl или в формате для helm, причем в нем еще многословнее
с helm безусловно удобнее распространять решения
возможно, я скажу непопулярную вещь: но мне жутко не нравится писать простыни конфигов и поддерживать их :) я говорю не про развитие концепции текущей, а про желание видеть альтернативы


Artem
25.06.2017
14:52:35
helm чо попало мне кажется. вот он пакет типа поставить захотел. пофейлился. вот в манифесте все что он там дедал до этого никуда не откатывается.

Google

Artem
25.06.2017
14:53:32
нельзя было сделать как в apt?

Igor
25.06.2017
17:03:23
> но вот пример: я изменил конфиг (лимит ресурсов), сделал "helm update" и ожидал что под перезапустится с измененным лимитом... этого не произошло
Если в качестве аргумента у helm upgrade был chart reference(напрмер 'stable/mariadb'), то ничего и не должно меняться без дополнительного аргумента --set или --values

O
26.06.2017
13:09:13
bebebe Не, в один ряд мы их не ставим. Это уже ваши додумки. На данный момент у нас автоматический деплой это просто вызов helm upgrade из Jenkins, а нам этого недостаточно, поэтому и смотрим на spinnaker, чтобы иметь более умные стратегии развёртывания обновлений.
@takama 1) deis авторы хелма, вот и пользуются. 2) microsoft купила deis, так что больше такой конторы нет. (https://blogs.microsoft.com/blog/2017/04/10/microsoft-acquire-deis-help-companies-innovate-containers/ https://deis.com/blog/2017/deis-to-join-microsoft/ )
@vkfont Посмотри на опцию —recreate-pods при обновлении

Igor
26.06.2017
13:14:34
@uthark Авторы хелма - Microsoft :)


bebebe
26.06.2017
13:15:32
bebebe Не, в один ряд мы их не ставим. Это уже ваши додумки. На данный момент у нас автоматический деплой это просто вызов helm upgrade из Jenkins, а нам этого недостаточно, поэтому и смотрим на spinnaker, чтобы иметь более умные стратегии развёртывания обновлений.
ок понял вас, тогда вам возможно будет интересная следующая инфа
делал R&D по спиннакеру в декабре (сейчас уже у них первый релиз, в этом месяце помойму)
вкратце: 9 контейнеров, которые нужно между с собой законнектить, что это означает, что сервисам нужно прописать нужные endpoint'ы, т.к. каждому рассказать где сидит сосединй сервис
kubernetes-plugin для деплоя он вроде как умеет, но на декабрь месяц в нем не было нужной гибкости, может допилили
api хорош, но несколько удручал, был не допилен, приходилось некоторые вещи делать коряво
в итоге у меня было демо, которое показвыает как деплоится кубернетес и на него ставится openstack, показывалось все в рамках flow самого spinnaker'a который под копотом дергал дженкинс


O
26.06.2017
13:15:36
@takama это утверждение стало правдой только после того, как МС их купил.

bebebe
26.06.2017
13:16:38
spinnaker в том числе подкупил тем, что в стандратный flow можно вставить перед деплоем стейдижнга ожидание ответа от оператора, или другого ответственного
типа ui который красиво продается

Igor
26.06.2017
13:17:43
@uthark Оно с 2016 года правда, политику делают основные контрибьюторы, достаточно посмотреть первых трёх
https://github.com/kubernetes/helm/graphs/contributors

O
26.06.2017
13:21:12
bebebe Кубернетес мы ставим собственным тулом, так что для нас это вообще не вопрос. Про спиннакер — мы тоже на него уже посмотрели, меня лично смущает общая недопиленность, хотя если они официально объявили 1.0, то, может, и поменялось что.

bebebe
26.06.2017
13:21:32
да, у меня было схожее ощущение, что недопиленность

Google

bebebe
26.06.2017
13:21:37
их релиз я не смотрел

O
26.06.2017
13:21:44
@takama Очевидно же, что если МС купила Deis, то у основных контрибьюторов будет указано место работы MC. :)

bebebe
26.06.2017
13:21:59
опять таки, я не знаю что вы пилите, я бы ставил spinnaker, в том случае, если нужно дяде который раздувает щеки показать красивую картинку
а для внутренних целей - ну хз если честно
если только опять же такие R&D задача есть

O
26.06.2017
13:23:48
Конкретно helm не устраивает тем, что это слишком простой тул для развёртывания, иной раз ломается при обновлении и сидишь руками разгребаешь. Понятно, что спиннакер тоже не панацея, но с ним можно хотя бы делать полноценный gradual rollout.

Andrey
26.06.2017
13:28:16
оффтоп: а есть какая-нибудь утилитка которая опросит мой кластер и покажет все ресурсы (request/limits), да так красиво что я бы понял какого хрена у меня новый сервис не влезает и кого можно ужать :)

bebebe
26.06.2017
13:48:03

Andrey
26.06.2017
13:50:48

O
26.06.2017
13:53:41
@vkfont Вроде в master уже починили. https://github.com/kubernetes/helm/issues/1971
@vkfont + https://github.com/kubernetes/helm/issues/2149

Andrey
26.06.2017
13:54:34
спасибо

Vitaliy
26.06.2017
16:18:12

Andrey
26.06.2017
16:20:56
Вот тоже наверно буду

Let Eat
26.06.2017
21:15:21

Vitaliy
26.06.2017
22:14:23
поды просто таблицами сделаны топ N https://www.evernote.com/shard/s123/sh/b354979a-6127-43f8-81b6-70d90d376d3e/683bb55e3e06c810
дашборд по утилизации кластера суммарно сделан, без подов
https://www.evernote.com/shard/s123/sh/4f7525d3-1a02-4f92-875a-39103e6221a6/000baea99b86101c
https://www.evernote.com/shard/s123/sh/40bdd96c-a291-4f16-9149-df1cb650ac2c/0e83f6d9eaf67b83
дашборды повседневно не используются. Приходят алерты по container_cpu_cfs_throttled_periods_total и oom killer :)

Ayrat
26.06.2017
22:22:57
Prometheus сами конфигурировали или через Operatorи ?

Vitaliy
26.06.2017
22:25:46
prometheus сами. Есть большой самописный helm чарт с prometheus, конфигами и нужными экспортерами. Конфиги prometheus приходится шаблонизровать немного для разных кластеров

Google

Vitaliy
26.06.2017
22:26:19
оператор во первых страшно, во вторых недостаточно гибко (но это не точно:))

Ayrat
26.06.2017
22:26:48
Согласен мне показалось это тема еще сырая
Я на helm тоже остановился
но не уверен какой стораж использовать
Gluster или просто HostPath

Vitaliy
26.06.2017
22:29:22
я почти уверен что гластер загнётся. У нас hostPath на ssd и fsync выключен. Prometheus пишет по 100мб/с

Ayrat
26.06.2017
22:30:04
ок спасибо. То есть если упадет то вторая реплика имеет полную копию я думаю..

Vitaliy
26.06.2017
22:30:20
это на 20к точек в секунду примерно

Ayrat
26.06.2017
22:32:02
а Graphanu другим helm ?
или у вас уже стояла где нибудь grafana

Vitaliy
26.06.2017
22:33:35
да, графана другим чартом. Кто-то в одном делает. Но у нас графана одна, а прометэусов несколько.

Ayrat
26.06.2017
22:34:46
ясно. А федерацию не делаете между Prometheusami ?

Ayrat
26.06.2017
22:35:54
не думаю что в helmе чарте есть такие опции

Vitaliy
26.06.2017
22:35:54
не делали, т.к. вроде незачем
у нас все чарты самописные:)

Ayrat
26.06.2017
22:36:35
ну как я понял у Вас prometheus ранится на каждом clustere

Vitaliy
26.06.2017
22:37:01
ага

Ayrat
26.06.2017
22:37:11
а можно было бы один центральный еще сделать
на всякий случай :)

Vitaliy
26.06.2017
22:38:04
можно, да. Но мы за данные в прометэусах вообще не паримся, даже не бэкапим их))

Google

Ayrat
26.06.2017
22:38:53
ок. A alertmanager тоже настроен на каждом кластере?

Vitaliy
26.06.2017
22:40:05
да. Конфиги и алерты везде одинаковые, только prometheus.yml шаблонизируем

Ayrat
26.06.2017
22:42:59
Спасибо очень интересно я на стадии планирования, поэтому очень интересно как люди пользуются

Zon
27.06.2017
05:32:29

Andrey
27.06.2017
06:07:15
По прометеусу тема интересная, сам щас метрики запускаю. Удивлен что Денис ещё канал не создал )

Anton
27.06.2017
06:11:41

Admin
ERROR: S client not available

Artem
27.06.2017
07:42:40

Роман
27.06.2017
08:40:58
У меня есть replicaset. Там я могу указывать, сколько подов запускать. И в процессе жизнедеятельности я буду наращивать количество нод. Мне нужно на каждой ноде запускать только один под из этого rs. Например: есть ноды nginx1 и nginx2.
1. Как настроить, чтобы у меня на каждой ноде запускался только один под?
2. Как указать в rs, чтобы деплой nginx разворачивался только на нодах nginxN?
Я так понимаю, мне надо роли и метки почитать? Или как-то по другому делают?

Andrey
27.06.2017
08:43:25
во, тоже по теме спрошу :) подскажите плиз где я накосячил?
apiVersion: v1
kind: Service
metadata:
labels:
app: neo4j
name: neo4j
spec:
ports:
- port: 7474
selector:
app: neo4j
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: neo4j
spec:
serviceName: neo4j
replicas: 3
template:
spec:
...
neo4j-0 под есть, neo4j сервис есть, а хост neo4j-0.neo4j.default.svc.cluster.local не пингуется

Zon
27.06.2017
09:02:33

Роман
27.06.2017
09:03:49

Fike
27.06.2017
09:09:21

Andrey
27.06.2017
09:10:15
Не, это с стейтфулами норм, походу днс глючит
/var/lib/neo4j # nslookup neo4j.default.svc.cluster.local
Name: neo4j.default.svc.cluster.local
Address 1: 10.51.242.56 neo4j.default.svc.cluster.local
/var/lib/neo4j # nslookup neo4j-1.neo4j.default.svc.cluster.local
nslookup: can't resolve 'neo4j-1.neo4j.default.svc.cluster.local': Name does not resolve
кто знает как править? %)

Maksim
27.06.2017
09:31:40
cat /etc/resolv.conf
+ смотри что с kube-dns творится, у тебя явно dns фигово раотает

Andrey
27.06.2017
09:34:30
с dns все норм (GKE), нашел в чем трабла: https://github.com/kubernetes/kubernetes/issues/30076
если вкратце то в сервисе надо было выставить clusterIP: None, не знал

Vitaliy
27.06.2017
09:37:37

Google

Zon
27.06.2017
09:38:33

Vitaliy
27.06.2017
09:38:54

Andrey
27.06.2017
13:08:53
есть набор стейтфулсетов которые по рафту выбирают мастера, при этом у мастера открывается порт а у слейвов закрывается
сервис кубернетеса ведь не умеет пускать на открытый порт? то есть если под лабел попадают 10 подов а порт открыт у 3-го то запрос всегда на 3-й пойдет

Vitaliy
27.06.2017
13:31:17

Andrey
27.06.2017
13:32:39
ммм, ну да это должно сработать, спасибо
а не, не сработает... он же вешается на pod: если сервис A должен смотреть на все 10 подов а сервис B только на те что с открытыми портами то когда сработает readiness оба сервиса на 3 будут смотреть

Fike
27.06.2017
13:51:11
каким-нибудь нжинксом с апрстримами это не решается?

Andrey
27.06.2017
14:01:27
как вариант... или ingress :)

Let Eat
27.06.2017
14:49:01

Роман
27.06.2017
14:49:51
rs ведь просто следит за запуском определённого количества реплик?

Let Eat
27.06.2017
14:51:12
ну вам нужно по поду на каждой ноде, это daemonset
ноды добавляются - поды добавляются

Maksim
27.06.2017
14:51:34
replicset просто следить за кол-во подов, но ему пофиг где и как они запущены

Роман
27.06.2017
14:51:54
О. Вот оно как. Спасибо. Завтра буду изучать.

Maksim
27.06.2017
14:51:55
daemonset следит что бы на каждой node был экзепляр пода

Let Eat
27.06.2017
14:52:28