G72K
кто как разворачивает кубер?
kube-aws + тоненькая обвязка на bash для работы с гит ветками
G72K
описал +- вот тут: https://github.com/kubernetes-incubator/kube-aws/issues/462
G72K
вкратце: создает ветку vanilla/stack куда просто вываливается дефолтный конфиг из kube-aws, затем на основе нее создается tailored/stack где все правки/дополнения/улучшения общие для всех кластеров, из них создается defaults/<AWS-account> которые по сути tailored/stack с заполненными полями вроде vpc-id, subnet id и т.д.,затем из них уже создается kluster/<kluster-name> где финальный конфиг конкретного кластера. таким образом изменения можно вносить на всех уровнях, "релизить" кластеры по будто это код ну и подтягивать всю свежесть из новых версий kube-aws относительно легко, без ручного переноса кастомизаций
G72K
десятком кластеров таким методом управлять получается довольно просто. при росте >20-30 кластеров наверно нужно будет дальше автоматизировать роботами
Vitalii
кто как разворачивает кубер?
coreos ignition конфиги. Шаблонизируем через Ansible. За основу брали coreos matchbox, но сильно всё переделано.
G72K
то есть вы скопировали kargo?
kargo умеет AWS Autoscaling groups?
Logan
Oleg
а разработку как ведете? вот надо всю инфраструктуру из подов, а отдельный локальный сервис со своей машины
Oleg
у меня я девопс )
Oleg
на чем san разворачиваете?
Logan
на чем san разворачиваете?
у нас ceph. решение неидеальное, но из того, что можно поднять в BMR я лучше не нашел
Sergey
Ребята подскажите в чем может быть проблема, у нас периодически ingress начинает на все запросы отдавать 503, в логах повляется надписи наподобие service default/company_1 does not have any active endpoints service default/company_2 does not have any active endpoints service default/company_3 does not have any active endpoints
Sergey
так происходит минут 5 потом все восстанавливается
Sergey
т.е. такое ощущение будто сервисы массово теряют endpoint
Sergey
при этом поды не пересоздаются
Logan
а в логах кубелета есть что-нибудь интересное?
Роман
Изучаю куб. Поднимаю тестовое приложение, типа вебсервера, который отображает на странице hostname (имя пода, в котором поднят контейнер). Создал нэймспейс, сервис и деплоймент. По умолчанию под не поднимается на мастер-ноде (10.0.0.10), но поднимается на node1 (10.0.0.11). Если я с node1 выполню curl http://127.0.0.1:30001, то всё хорошо - показывается hostname. Если я с мастер-ноды выполню curl http://127.0.0.1:30001 (порт этот есть в списке открытых) - у меня таймаут соединения. В связи с этим вопрос: что мне ещё нужно предпринять, чтобы схема заработала? Реализовать хочу такую схему: допустим я поднял несколько реплик на разных нодах - что-то должно балансировать запросы между ними. Пускай это делает nginx. Сейчас я вижу только то, что мне вручную придётся править конфиг энджинкса и прописывать там ноды. Может это как-то по другому делается?
Роман
Ну и второе: где и что нужно разрешить, чтобы я с мастер-ноды мог выполнить curl http://10.0.0.11:30001? Сейчас у меня тоже таймаут, если я пытаюсь это сделать. Думаю, это потому, что каких-то прав нехватает...
Zon
А вот такой вопрос - чем лучше сделать простые (301/302) редиректы, если их нужно много и не хочется билдить для этого новые имаджи? Чтоб при этом можно было регэкспы задавать, а не просто мап
Sokolov
Привет всем. На работе внедряется Kubernetes. Где можно подробно и с примерами почитать? В доке? Или лучше есть? Может видео?
Logan
а вы не пробовали самостоятельно искать информацию?
Logan
а то такой вопрос выглядит даже не как хамство
Logan
для начала можно взять официальный док и курс на юдасити
Konstantin
lmgtfy
Zon
Гляньте внутри nginx-ingress, может там есть какие-нибудь хуки специально под это дедл
Там была опция, но как-то не очень красивое решение получается особенно если gce ingress тоже использовать
Artе́m
Ребят, можно вопрос?
Artе́m
Мне надо ноду развернуть, чтобы было, как здесь infura.io
Artе́m
https://github.com/ethereumproject/etherkube
Artе́m
может кто-то помочь с этим?
Konstantin
Помочь - сделать?
Logan
вот мне тоже интересно стало
Knyage
Коллеги, правильно ли я понимаю схему кластеризации мастер-нод: каждый из процессов (etcd, kube-apiserver , kube-dns) должен быть запущен как docker контейнер. Каждый процесс объявить cервисом, с проброшенным наружу IP, ну и настроить Replication Controllers. Соответственно снаружи запросы на них будут поступать через какой-нибудь балансировщик (тот же nginx+, например). Собственно требуется повысить отказоустойчиость самого кластера, чтобы при падении мастера (где у меня крутится апи и прочее), кластер оставался доступным. Может я чего не так понимаю 🤔 Буду благодарен, если кто подскажет, как лучше всего это должно быть спроектировано :)
G72K
etcd это отдельная песня.запускаете их нечетное количество >2 и все
G72K
матсер ноды: на каждой apiserver, scheduller , controller (ну и kubelet но он везде кроме etcd)
G72K
apiserver они stateless, так что все просто работает. scheduller и controller manager умеют leader election если передать соответствующий флаг. тогда они между собой через etсd будут договариваться кто из них главный, а остальные на подхвате
Artur
Всем привет. Подскажите что такое Deployments в контексте Kubernetes?
Etki
Какие вопросы возникли после прочтения оф.доки?
Sergej
"(etcd, kube-apiserver , kube-dns) должен быть запущен как docker контейнер. " можно и в качестве бинарника.
Dorian
православенее в докере
Dorian
бинари тоже работают
Knyage
Спасибо за ответы!
G72K
православенее в докере
самое православное это внутри самого куба :)
Dorian
С резервированием
Dorian
ахха
G72K
Всем привет. Подскажите что такое Deployments в контексте Kubernetes?
Deployment - это ресурс который запускает несколько экземпляров пода и умеет их обновлять согласно настраиваемой стратегии обновления
Knyage
etcd это отдельная песня.запускаете их нечетное количество >2 и все
прям вот просто запускать, без какой либо донастройки? :)
Maksim
прям вот просто запускать, без какой либо донастройки? :)
НУ почти https://coreos.com/etcd/docs/latest/v2/clustering.html
Knyage
оп,спасибо! Пошел изучать :)
Etki
https://coreos.com/etcd/docs/latest/op-guide/clustering.html подозреваю что для третьей версии это
G72K
ясно. получается к deployment можно привязать автоматическое обновление?
когд вы обновляете deployment, оно постепенно перезапустит все контейнеры , которыми управляет
G72K
обновляете == заливаете новый yaml
G72K
прям вот просто запускать, без какой либо донастройки? :)
etcd-wrapper работает из коробки, всё что нужно задать - ETCD_INITIAL_CLUSTER или что-то такое
Konstantin
есть кто работает с разной оркестрацией? docker swarm mode сильно отстаёт от кубера по функционалу?
Roman
Ребят, пытаюсь продумать как сделать правильно, но не получается с собой даже договориться. Подскажите, пожалуйста. Есть сервис, который из себя представляет бинарь на go, общающийся с redis в качестве хранилки. Допустым есть несколько нод в кластере kubernetes (предположим 4). Хочется размножить на эти ноды данный сервис. С размножением go-шного бинарника в контейнере никаких проблем нет, делаем replicas 4 и забываем. Как быть с редисом я не совсем понимаю, а конкретно - с консистентностью данных. Можно на каждой ноде сделать вольюм, который будет монтироваться по сети, но мне кажется что это костыль. Может кто сталкивался с подобным, подскажите добрым словом.
Etki
вам нужно сменить хранилище. я не шучу.
Etki
если у вас не включен фсинк на каждый коммит в редисе, то вы и так уже в беде
Konstantin
смотря что он хранит в редисе, не сказано. И нужно ли его масштабировать в его случае вообще
Etki
данные, которые должны быть консистентными
Roman
вам нужно сменить хранилище. я не шучу.
да, я уже рассматривал этот вариант) просто можно что сделать - 4 приложения на го, которые пишут в один редис. но этот редис находится на одной ноде. в случае выхода ноды из строя будут проблемы. о реплике я тоже думал, но это вариантик так себе. собрать кластер из редисов - вольюмы и костыли
Etki
Этот кластер все равно будет неконсистентным, там все гарантии только от однопоточного режима. В случае кластера эта отговорка уже понтяное дело не сработает.
Konstantin
редис для данных плохая затея
Etki
Если у вас жесткие требования к консистентности (требуется линеаризация операций, т.е. результат операции над записью сразу же виден последующим чтениям), то попробуйте riak, если у вас что-то попроще - то можно взять Кассандру (там на самом деле тоже можно делать CAS-операции, просто по умолчанию там нет никаких проверок, да и у riak бОльшая заточенность на разбор с конфликтами - те же счетчики у него должны работать как часы, у кассандры возможны аномалии).
Etki
(есть еще миллиард других вариантов, просто я их не знаю или недостаточно знаю, чтобы рекомендовать)
Roman
да можно тарантул взять даже🌚 вопрос был именно о редисе)
Roman
спасибо, ребят)
Maksim
оп,спасибо! Пошел изучать :)
https://kubernetes.io/docs/admin/high-availability/
Maksim
Ещё чуток инфы. Вообще на офф сайте очень много интеренсого написано...
Konstantin
redis умеет кластер нативно
Да я ему даже готовый конфиг скинул, но тут вопрос в целесообразности
Etki
редис не нужен 😏
Pasha
Using Projected volumes | Kubernetes https://kubernetes.io/docs/tasks/configure-pod-container/projected-volume/
Sergey
> We are excited to announce that we are working in partnership with both Google and IBM to bring Envoy to Kubernetes. https://eng.lyft.com/envoy-7-months-later-41986c2fd443 https://news.ycombinator.com/item?id=14194026