Anonymous
есть набор стейтфулсетов которые по рафту выбирают мастера, при этом у мастера открывается порт а у слейвов закрывается сервис кубернетеса ведь не умеет пускать на открытый порт? то есть если под лабел попадают 10 подов а порт открыт у 3-го то запрос всегда на 3-й пойдет
Anonymous
ммм, ну да это должно сработать, спасибо
Anonymous
а не, не сработает... он же вешается на pod: если сервис A должен смотреть на все 10 подов а сервис B только на те что с открытыми портами то когда сработает readiness оба сервиса на 3 будут смотреть
Etki
каким-нибудь нжинксом с апрстримами это не решается?
Anonymous
как вариант... или ingress :)
Роман
вам нужен daemonset
Спасибо. А в чём важные отличия в моём случае?
Роман
rs ведь просто следит за запуском определённого количества реплик?
G72K
ну вам нужно по поду на каждой ноде, это daemonset
G72K
ноды добавляются - поды добавляются
Maksim
replicset просто следить за кол-во подов, но ему пофиг где и как они запущены
Роман
О. Вот оно как. Спасибо. Завтра буду изучать.
Maksim
daemonset следит что бы на каждой node был экзепляр пода
G72K
replicset просто следить за кол-во подов, но ему пофиг где и как они запущены
можно antiAffinity задать, но все равно, при добавлении нод кому-то придется подкрутить количество подов в rs
G72K
а с daemonset такой проблемы нет, тем более их в 1.6 можно обновлять стало
Maksim
можно antiAffinity задать, но все равно, при добавлении нод кому-то придется подкрутить количество подов в rs
Это уже чуточку из другой оперы) и опять же задаёт правила запуска для Шелдулера)
Maksim
ds в 1.6 заработал как деплой?
Maksim
я просто ещё 1.6 не мучал, у меня 1.5 в бою
G72K
я просто ещё 1.6 не мучал, у меня 1.5 в бою
обновляйтесь, скоро уже 1.7 будет :)
Maksim
а скоро это когда?) месяц? два?
G72K
вот как это поборят, так сразу :) https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20milestone%3Av1.7
bebebe
а кто-нибудь пробовал ansible-container deploy в k8s?
Dmitry
@let
Dmitry
@rossmohax Ранние версии уже есть. У меня стоит, ради того что-бы потыкать ручками
G72K
я не такой смелый :)
G72K
буду ждать 1.7.2 :)
Dmitry
Хотя у нас Прометей снаружи
wnmp
Я пользуюсь Rancher, но сейчас Cattle как оркестратор
wnmp
а по ранчеру кто подскажет?
Evgeniy
Я пользуюсь Rancher, но сейчас Cattle как оркестратор
Cattle всегда стабильно работает? не бывает, что от версии к версии, что-то ломается кардинально?
wnmp
Нет, но бывают проблемы с rancher server (cattle процесс) . Столкнулся с зависанием тредов на сервере и повышенным потреблением CPU. Пришлось лезть в базу и удалять записи о воркерах.
wnmp
Ещё очень нестабильно работает обновление через rancher-compose или rancher cli, автоопределение новой версии образа у меня никак не работает.
wnmp
Ну и rancher-compose устарел, хотя и stable. В итоге пользуемся rancher cli.
𝕍ℤ
а почему kubelet в логи сыпет, что не может статы с lxd дисков на zfs получить? зачем ему zfs да и еще от lxd?) [fs.go:333] Stat fs failed. Error: exit status 1: "/sbin/zfs zfs get -Hp all lxd/images/1e59027d1d58873fc7e23f769232cd4846c6d675ea292bc71037fafc1547649d" => cannot open 'lxd/images/1e59027d1d58873fc7e23f769232cd4846c6d675ea292bc71037fafc1547649d': dataset does not exist
Denis
А кто сейчас чем раскатывает на bare? kargo (kubespray) очень медленно развивается, может есть достойные варианты?
Maxim
А есть кто удачно запустил в продакшен k8s-кластер на CoreOS загружающейся по PXE?
Anonymous
Сорян за оффтоп, не красиво чужие вопросы своим перебивать... я просто оставлю это тут вдруг кто ответит: Я обычно с пониманием отношусь к тому что я чего-то недопонимаю, но тут походу фундаментальное недопонимание и оно меня бесит. Короче, есть некое приложение который использует RAFT для достижения консенсуса. При этом, алгоритм там настолько тупо реализован что требуется при запуске указать всех участников и они должны быть доступны, иначе приложение не стартует. Для того чтобы с самого начала были известны имена всех участников, я заюзал petset с headless service (можно deployment с отдельными сервисами но там свои косяки). То есть, сервис используется в данном случае ТОЛЬКО для того чтобы были стабильные dns-имена правильно резольвящиеся в айпишники. Приложение запускается, видит всех своих друзей и с использованием raft образует mesh-сесть (ну, не совсем mesh конечно но в данном контексте сойдет) между всеми участниками подключившись НАПРЯМУЮ друг к другу по айпишникам которые срезольвились через dns по порту 5001. На этом мои знания заканчиваются и начинается магия... 1) Почему без указания абсолютно левого порта в headless serivice который нужен только для резольвинга приложение не запускается (висит на "ожидаем всех участников") - то есть с вероятностью 90% не создаются A-записи в кубернетеском dns? (каюсь, не проверил этот момент потому что утомился) 2) Что я не понимаю в этой схеме? Есть какая-то ключевая позиция которую я упускаю? Вот код того что проверяю если что: https://pastebin.com/aF6Y2USY
Zon
Сорян за оффтоп, не красиво чужие вопросы своим перебивать... я просто оставлю это тут вдруг кто ответит: Я обычно с пониманием отношусь к тому что я чего-то недопонимаю, но тут походу фундаментальное недопонимание и оно меня бесит. Короче, есть некое приложение который использует RAFT для достижения консенсуса. При этом, алгоритм там настолько тупо реализован что требуется при запуске указать всех участников и они должны быть доступны, иначе приложение не стартует. Для того чтобы с самого начала были известны имена всех участников, я заюзал petset с headless service (можно deployment с отдельными сервисами но там свои косяки). То есть, сервис используется в данном случае ТОЛЬКО для того чтобы были стабильные dns-имена правильно резольвящиеся в айпишники. Приложение запускается, видит всех своих друзей и с использованием raft образует mesh-сесть (ну, не совсем mesh конечно но в данном контексте сойдет) между всеми участниками подключившись НАПРЯМУЮ друг к другу по айпишникам которые срезольвились через dns по порту 5001. На этом мои знания заканчиваются и начинается магия... 1) Почему без указания абсолютно левого порта в headless serivice который нужен только для резольвинга приложение не запускается (висит на "ожидаем всех участников") - то есть с вероятностью 90% не создаются A-записи в кубернетеском dns? (каюсь, не проверил этот момент потому что утомился) 2) Что я не понимаю в этой схеме? Есть какая-то ключевая позиция которую я упускаю? Вот код того что проверяю если что: https://pastebin.com/aF6Y2USY
А там не srv записи разве? для srv записи нужен порт
Anonymous
а, то есть если я порт не задаю (даже если он не нужен) то запись просто не создается? это все объясняет походу, спасибо :)
Anonymous
я че-то про A всегда думал
Etki
А там не srv записи разве? для srv записи нужен порт
я тоже так подумал, но в доках вроде простой nslookup находит
Anonymous
стопэ, а ping xxx.yyy.svc.cluster.local это ведь A
Zon
Мне кажется srv первична, не?
Logan
а можно ссылку?
https://github.com/evilmartians/chef-kubernetes/
Maxim
да
Чистый Matchbox для доставки Ignition-конфига на ноду или на Terraform?
Vitalii
Чистый Matchbox для доставки Ignition-конфига на ноду или на Terraform?
через ansible генерим из шаблонов ignition конфиги и профили для каждой ноды в Matchbox
Vitalii
но я не призываю делать также:) Это делалось во времена когда terraform там не было и назывался он по другому
Maxim
да
Как с сетью решили? CNI + flannel(или другой overlay) или kubenet?
Vitalii
cni нету. flannel host-gw
Vitalii
Кто-нибудь запускает postgres в подах? Как рестартуете/останавливаете ?
Igor
Запускаем cockroachdb в подах :)
Igor
драйвер postgres
Роман
Что-то заинтересовался моментом... Если ставить куб "из коробки", если мастер упадёт, как будет вести себя кластер? Сайты будут открываться?
Роман
А как обычно поднимают упавший мастер? Там же токены нужны и прочее. Что почитать?
Knyage
Уточни, на счет упал. Т.е. сервер совсем умер? Или отключился, перезагрузился,включился?
Logan
Уточним - он упал или он уничтожен?
Роман
Например, питание от сервера отключили. Ааа, хотя, после старта он же должен сам подняться? Или, например, памяти не хватило и упал по сегфолту - маловероятно, но а вдруг!
Роман
Обычно мастер не один, в продакшин у многих 3 мастера
То есть, если совсем уничтожить один мастер, то можно его будет потом подключить, как ноду и назначить мастером?
Igor
То есть, если совсем уничтожить один мастер, то можно его будет потом подключить, как ноду и назначить мастером?
Да, если совсем уничтожить, то можно подключить новый мастер, данные конфигурации в etcd хранятся
Logan
То есть, если совсем уничтожить один мастер, то можно его будет потом подключить, как ноду и назначить мастером?
нет. Но можно восстановить etcd, конфиги, токены и ключи со старого и поднять на новом
Роман
нет. Но можно восстановить etcd, конфиги, токены и ключи со старого и поднять на новом
В смысле, если мастеров изначально больше одного было. Один уничтожить.
Logan
тогда никаких проблем не будет вообще. создаем нового мастера, цепляем к существующему, удаляем старого из конфигов
Ivan
а кто нить бэкапит etcd и пробовал его ресторить?=)
Artem
http://s6.pikabu.ru/post_img/2017/06/05/0/og_og_14966114892546496.jpg
Knyage
http://s6.pikabu.ru/post_img/2017/06/05/0/og_og_14966114892546496.jpg
Только искал эту кратинку :)
Logan
там ничего сложного на самом деле
Ivan
там ничего сложного на самом деле
там вроде 2 метода: 1. через snapshot 2. через backup. Различие в версиях хранимых данных(v2/v3). У нас в etcd и те и те, вот и интересно стало, кто делал и как=)