M
вроде работает
Dmitry
посмотрел на хардвей, буду пробовать) @exename а ты по нему настраивал?
M
нет
M
первую установку делал по смеси coreos и мана в гите у k8s
M
ман уже выпилили вроде
Dmitry
на хабре есть перевод вроде
Dmitry
но сейчас они будут толкать народ в сторону kubeadm
Dmitry
потому что не каждый так с бубном сможет))
Dmitry
@exename @agadelshin спасибо большое за помощь! пойду спать и завтра буду заново курить как запустить
Alexander
Я вчера провозился с этим кубэадмином пол дня, в итоге он насоздавал всякую чушь а кубернетис так и не запустил )
Sn00part
кубернетис сложный. какую именно часть не запустил)
Alexander
пол дня, это мало
Alexander
недельку как минимум надо
Sn00part
а в суровых погодных условиях до пяти месяцев)
Alexander
уже 1.4.1 зарелизили
Alexander
Да я так и понял )
Alexander
Но кстати второй вариант через weave нормально заработал
Igor
Успешно устанавливаем kubernetes ансиблом, но только на CentOS 7 пока. Роли ансибла свои, с фэйрволом.
Sn00part
а карго пробовали?
Dmitry
Успешно устанавливаем kubernetes ансиблом, но только на CentOS 7 пока. Роли ансибла свои, с фэйрволом.
а за основу брались не эти скрипты? https://github.com/kubernetes/contrib/tree/master/ansible
Igor
За основу брались не скрипты, а руководство по установке на RHEL. С contrib впоследствии был взят только README :)
Igor
Также еще с других руководств по нитке :)
Igor
Почти нигде не используется фэйрвол, пришлось по крупицам собирать инфу также
Dmitry
За основу брались не скрипты, а руководство по установке на RHEL. С contrib впоследствии был взят только README :)
понял я уже несколько дней ковыряю - до сих пор адекватно кластер не запустился беда у них какаято с порогом входа
Igor
лучше по частям и самому - тогда приходит понимание
Dmitry
а разработчики что использую локально для того, чтобы писать микросервисы?) миникуб?
Alexander
лучше по частям и самому - тогда приходит понимание
Вот абсолютно согласен... Пока сам ручками не докопаешься, полное понимание никогда не придет
Igor
Сначала ETCD кластер или просто на мастер, потом flannel, 3 компонента: APIserver, Cotro;ler Manager иScheduler, потом kubelet и kubeproxy
Igor
ансиблом просто все делается потом то же самое что и руками, только в нужной последовательности
Igor
Рабочая демка: https://github.com/takama/k8sdemo
Dmitry
спасибо! сейчас попробую
Igor
Dashboard и SkyDNS там ставятся отдельно, одной коммандой - не по умолчанию.
Igor
Если понадобятся то в доке есть комманда как поставить
Igor
а разработчики что использую локально для того, чтобы писать микросервисы?) миникуб?
Разработчики пишут микросервисы не привязываясь к kubernetes - 12 факторные требованя к микросервисам покрывают большую часть условий + согласование на этапе конфигурации, в итоге все очень легко масштабируется
Igor
У нас в компании есть звено между разработчиками и девопсами, которые умеют и то и другое :)
Dmitry
Разработчики пишут микросервисы не привязываясь к kubernetes - 12 факторные требованя к микросервисам покрывают большую часть условий + согласование на этапе конфигурации, в итоге все очень легко масштабируется
это оно?) https://habrahabr.ru/post/258739/ я начал разворачивать кубернет, чтобы посмотреть, как там конфиги можно хранить и так вещи, чтобы уже начать сервисы писать с такими идеями) сейчас почитаю статью - если не будет привязки к кубернету, то это вообще мечта)
Igor
Да оно, касательно конфигов - 100% идеальное решение: всю динамику только через переменные окружения ENV, всю статику залинковывать в контейнеры
Igor
Kubernetes может легко работать без SkyDNS если есть соглащение по именованию ENV, в демке про это упоминается
Igor
Кстати оно уже с переводом вроде в оригинале: https://12factor.net/ru/
Dmitry
а сервис дискавери? мне напрямую нужно взаимодейтсвовать с etcd (он, как я понял, используется по умолчанию в кубернете) или там переменные среды будут обновляться и я должен их отслеживать их в самом приложении? например: имеем 2 сервиса: 1) принимающий запросы от клиента (браузера) 2) сервис аутентификации пользователя (к этому сервису ходят другие сервисы, до которых может достучаться пользователь; до сервиса аутентификации пользователь не может достучаться напрямую) так вот, если сервис аутентификации отвалится или поднимается его реплика и уже будет 2 сервиса аутентификации, то как сервис, принимающий запросы от клиента, сможет узнать новый айпишник новой реплики?) я собственно изза этого вопроса и начал кластер разворвачивать, чтобы смоделировать данную ситуацию и понять, как я должен писать код
Igor
У Kubernetes используется кластерный IP - именно он и заполнен в переменных окружения ENV. Обращение к сервису происходить по кластерному IP. Если одна из реплик отваливается, то поднимается другая реплика. С этим проблем нет
Etki
а сервис дискавери? мне напрямую нужно взаимодейтсвовать с etcd (он, как я понял, используется по умолчанию в кубернете) или там переменные среды будут обновляться и я должен их отслеживать их в самом приложении? например: имеем 2 сервиса: 1) принимающий запросы от клиента (браузера) 2) сервис аутентификации пользователя (к этому сервису ходят другие сервисы, до которых может достучаться пользователь; до сервиса аутентификации пользователь не может достучаться напрямую) так вот, если сервис аутентификации отвалится или поднимается его реплика и уже будет 2 сервиса аутентификации, то как сервис, принимающий запросы от клиента, сможет узнать новый айпишник новой реплики?) я собственно изза этого вопроса и начал кластер разворвачивать, чтобы смоделировать данную ситуацию и понять, как я должен писать код
Тупо резолвишь днс с headless-сервисом раз в секунду-две-десять, подтягиваешь новые айпишники. Запросы делашеь настолько идемпотентными, насколько возможно, в случае провала либо делаешь ретрай на следующем сервере, либо сразу возвращаешь ошибку в случае неидемпотентности
Igor
Кластерный IP - это адрес сервиса, а не конкретной реплики. Обращение происходит к одной из живых реплик
Igor
не, там именно IP
Igor
ipv4
Dmitry
не, там именно IP
понял получается IP, который не меняется в жизни контейнера с сервисом, верно?)
Igor
не меняется с регистрацией сервиса, даже если реплик нет
Dmitry
не меняется с регистрацией сервиса, даже если реплик нет
понял! шикарно! это отличная новость, спасибо)
Etki
если ай»кластерный айпишник не меняется, то зачем тогда подтягивать свежие айпишники?)
Если tcp-коннект не рвется, у тебя все на одну реплику уходить будет.
Etki
Там еще какие-то edge cases были, но я уже не вспомню сейчас
Igor
по хорошему еще нужно в продакшин поставить Ingres для балансировки правильной
Dmitry
Если tcp-коннект не рвется, у тебя все на одну реплику уходить будет.
если ip кластерный, то получается, что балансировщик сам решит, кто будет отвечать на запрос, не?)
Igor
по сути там HAProxy
Etki
если ip кластерный, то получается, что балансировщик сам решит, кто будет отвечать на запрос, не?)
как ты представляешь себе перенаправление живого tcp-подключения на другой айпи в реалтайме?
Dmitry
если подключение к БД создалось, то уже никак)
Igor
Чтобы все было четко с TCP и балансировкой - используйте Ingres - HaProxy
Dmitry
но ведь если у меня 2 реплики бд, то один сервис подрубится к одной реплике, а другой - к другой
Igor
К БД тоже HAProxy и лучше отдельно, вне кластера Kubernetes
Igor
Балансировка к БД - отдельная тема
Dmitry
никто не дает таких гарантий
верно но в случае, когда приложение само ходит и где-то спрашивает, не обновились ли айпишники, то приложение самостоятельно должно будет пересоздать подключение
Igor
У нас стоит Galera 7 нод мастер-мастер через HAProxy
Dmitry
Балансировка к БД - отдельная тема
да, скорее всего это так) меня больше волновал запрос к внутренним самописным сервисам, с которыми нет необходимости держать TCP соединение
Dmitry
а как быть с secret токенами? например от AWS S3?
Dmitry
их тоже хранить в переменных среды?
Igor
Хранить можно где угодно, но в переменные среды они попадают хоть как
Dmitry
или есть файл с общими креденшиалами, которые линкуются во все контейнеры и все от них питаются?
Etki
верно но в случае, когда приложение само ходит и где-то спрашивает, не обновились ли айпишники, то приложение самостоятельно должно будет пересоздать подключение
да. я в основном сейчас про ситуацию с http-запросами между сервисами, где можно атомарно переключить коннект, но по-хорошему к такой ситуации приложение тоже должно быть готово
Igor
Можно для этого запускать контейнер с секретами :)
Dmitry
есть такая штука, как secrets
secrets - это тоже штука отвязанная от кубертнета? я пытаюсь понять, что гуглить)
Etki
не-не, это прям его фичаа
Etki
http://kubernetes.io/docs/user-guide/secrets/
Igor
secrets в Кубернетисе вроде
Etki
я до нее так и не дошел, но там все нормально с распределением секретов только для тех, кто должен их знать
Dmitry
http://kubernetes.io/docs/user-guide/secrets/
сейчас прочту но по идее, это уже завязка на кубернете - не очень наверное, не?)