Anonymous
не, deis это больше про деплой своего кода
Igor
Helm - активно развивающаяся утилита в состоянии постоянного совершенствования. Кто-то предпочитает свой велосипед "более надёжный". Кто-то активно контрибьютит в Helm, чтобы обеспечить свои хотелки. У каждого свой выбор. Для гарантии релизов нужно побольше делать вклад в развитие helm.InstallWait (--wait option)
Igor
Deis пользуется helm :)
Anonymous
> Helm - активно развивающаяся утилита в состоянии постоянного совершенствования.
ну кто же спорит, молодцы парни... я ведь не говорю что это какашка :) тем более сам пользуюсь за отсутствием альтернатив
но вот пример: я изменил конфиг (лимит ресурсов), сделал "helm update" и ожидал что под перезапустится с измененным лимитом... этого не произошло, понятно что сам дурак но я щас про ожидания от утилиты и фактическое ее действие
к'мон, если отбросить некоторые юзкейсы вещи то в целом какая разница где конфиги епошить: в формате для kubectl или в формате для helm, причем в нем еще многословнее
с helm безусловно удобнее распространять решения
возможно, я скажу непопулярную вещь: но мне жутко не нравится писать простыни конфигов и поддерживать их :) я говорю не про развитие концепции текущей, а про желание видеть альтернативы
Sn00part
helm чо попало мне кажется. вот он пакет типа поставить захотел. пофейлился. вот в манифесте все что он там дедал до этого никуда не откатывается.
Sn00part
нельзя было сделать как в apt?
Igor
> но вот пример: я изменил конфиг (лимит ресурсов), сделал "helm update" и ожидал что под перезапустится с измененным лимитом... этого не произошло
Если в качестве аргумента у helm upgrade был chart reference(напрмер 'stable/mariadb'), то ничего и не должно меняться без дополнительного аргумента --set или --values
Oleg
bebebe Не, в один ряд мы их не ставим. Это уже ваши додумки. На данный момент у нас автоматический деплой это просто вызов helm upgrade из Jenkins, а нам этого недостаточно, поэтому и смотрим на spinnaker, чтобы иметь более умные стратегии развёртывания обновлений.
Oleg
@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/ )
Oleg
@vkfont Посмотри на опцию —recreate-pods при обновлении
Igor
@uthark Авторы хелма - Microsoft :)
bebebe
bebebe Не, в один ряд мы их не ставим. Это уже ваши додумки. На данный момент у нас автоматический деплой это просто вызов helm upgrade из Jenkins, а нам этого недостаточно, поэтому и смотрим на spinnaker, чтобы иметь более умные стратегии развёртывания обновлений.
ок понял вас, тогда вам возможно будет интересная следующая инфа
делал R&D по спиннакеру в декабре (сейчас уже у них первый релиз, в этом месяце помойму)
вкратце: 9 контейнеров, которые нужно между с собой законнектить, что это означает, что сервисам нужно прописать нужные endpoint'ы, т.к. каждому рассказать где сидит сосединй сервис
kubernetes-plugin для деплоя он вроде как умеет, но на декабрь месяц в нем не было нужной гибкости, может допилили
api хорош, но несколько удручал, был не допилен, приходилось некоторые вещи делать коряво
в итоге у меня было демо, которое показвыает как деплоится кубернетес и на него ставится openstack, показывалось все в рамках flow самого spinnaker'a который под копотом дергал дженкинс
Oleg
@takama это утверждение стало правдой только после того, как МС их купил.
bebebe
spinnaker в том числе подкупил тем, что в стандратный flow можно вставить перед деплоем стейдижнга ожидание ответа от оператора, или другого ответственного
bebebe
типа ui который красиво продается
Igor
@uthark Оно с 2016 года правда, политику делают основные контрибьюторы, достаточно посмотреть первых трёх
https://github.com/kubernetes/helm/graphs/contributors
Oleg
bebebe Кубернетес мы ставим собственным тулом, так что для нас это вообще не вопрос. Про спиннакер — мы тоже на него уже посмотрели, меня лично смущает общая недопиленность, хотя если они официально объявили 1.0, то, может, и поменялось что.
bebebe
да, у меня было схожее ощущение, что недопиленность
bebebe
их релиз я не смотрел
Oleg
@takama Очевидно же, что если МС купила Deis, то у основных контрибьюторов будет указано место работы MC. :)
bebebe
опять таки, я не знаю что вы пилите, я бы ставил spinnaker, в том случае, если нужно дяде который раздувает щеки показать красивую картинку
bebebe
а для внутренних целей - ну хз если честно
bebebe
если только опять же такие R&D задача есть
Oleg
Конкретно helm не устраивает тем, что это слишком простой тул для развёртывания, иной раз ломается при обновлении и сидишь руками разгребаешь. Понятно, что спиннакер тоже не панацея, но с ним можно хотя бы делать полноценный gradual rollout.
Anonymous
оффтоп: а есть какая-нибудь утилитка которая опросит мой кластер и покажет все ресурсы (request/limits), да так красиво что я бы понял какого хрена у меня новый сервис не влезает и кого можно ужать :)
Oleg
@vkfont Вроде в master уже починили. https://github.com/kubernetes/helm/issues/1971
Oleg
@vkfont + https://github.com/kubernetes/helm/issues/2149
Anonymous
спасибо
Vitalii
Anonymous
Вот тоже наверно буду
G72K
Vitalii
поды просто таблицами сделаны топ N https://www.evernote.com/shard/s123/sh/b354979a-6127-43f8-81b6-70d90d376d3e/683bb55e3e06c810
Vitalii
дашборд по утилизации кластера суммарно сделан, без подов
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
Vitalii
дашборды повседневно не используются. Приходят алерты по container_cpu_cfs_throttled_periods_total и oom killer :)
Ayrat
Prometheus сами конфигурировали или через Operatorи ?
Vitalii
prometheus сами. Есть большой самописный helm чарт с prometheus, конфигами и нужными экспортерами. Конфиги prometheus приходится шаблонизровать немного для разных кластеров
Vitalii
оператор во первых страшно, во вторых недостаточно гибко (но это не точно:))
Ayrat
Согласен мне показалось это тема еще сырая
Ayrat
Я на helm тоже остановился
Ayrat
но не уверен какой стораж использовать
Ayrat
Gluster или просто HostPath
Vitalii
я почти уверен что гластер загнётся. У нас hostPath на ssd и fsync выключен. Prometheus пишет по 100мб/с
Ayrat
ок спасибо. То есть если упадет то вторая реплика имеет полную копию я думаю..
Vitalii
это на 20к точек в секунду примерно
Ayrat
а Graphanu другим helm ?
Ayrat
или у вас уже стояла где нибудь grafana
Vitalii
да, графана другим чартом. Кто-то в одном делает. Но у нас графана одна, а прометэусов несколько.
Ayrat
ясно. А федерацию не делаете между Prometheusami ?
Ayrat
не думаю что в helmе чарте есть такие опции
Vitalii
не делали, т.к. вроде незачем
Vitalii
у нас все чарты самописные:)
Ayrat
ну как я понял у Вас prometheus ранится на каждом clustere
Vitalii
ага
Ayrat
а можно было бы один центральный еще сделать
Ayrat
на всякий случай :)
Vitalii
можно, да. Но мы за данные в прометэусах вообще не паримся, даже не бэкапим их))
Ayrat
ок. A alertmanager тоже настроен на каждом кластере?
Vitalii
да. Конфиги и алерты везде одинаковые, только prometheus.yml шаблонизируем
Ayrat
Спасибо очень интересно я на стадии планирования, поэтому очень интересно как люди пользуются
Zon
Anonymous
По прометеусу тема интересная, сам щас метрики запускаю. Удивлен что Денис ещё канал не создал )
Artem
Роман
У меня есть replicaset. Там я могу указывать, сколько подов запускать. И в процессе жизнедеятельности я буду наращивать количество нод. Мне нужно на каждой ноде запускать только один под из этого rs. Например: есть ноды nginx1 и nginx2.
1. Как настроить, чтобы у меня на каждой ноде запускался только один под?
2. Как указать в rs, чтобы деплой nginx разворачивался только на нодах nginxN?
Я так понимаю, мне надо роли и метки почитать? Или как-то по другому делают?
Anonymous
во, тоже по теме спрошу :) подскажите плиз где я накосячил?
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
Роман
Etki
Anonymous
Не, это с стейтфулами норм, походу днс глючит
Anonymous
/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
cat /etc/resolv.conf
Maksim
+ смотри что с kube-dns творится, у тебя явно dns фигово раотает
Anonymous
с dns все норм (GKE), нашел в чем трабла: https://github.com/kubernetes/kubernetes/issues/30076
Anonymous
если вкратце то в сервисе надо было выставить clusterIP: None, не знал
Zon
Vitalii