Andrey
просто объяснить nginx`у какой контейнер стартовать при обращении на какой ендпоинт
Maksim
а что является тригером создания первого пода?
Maksim
и как определят что нагрузки больше нет?
Sergey
просто объяснить nginx`у какой контейнер стартовать при обращении на какой ендпоинт
ну вот наверное так надо, хотелось бы это все завернуть в докер еще
Andrey
триггером - обращение в ingress, а завершиться он должен сам
Maksim
Если чесно я ещё не встречал прилажух, загружающихся по запросу..
Maksim
Если такое и делается, сто ставится watchdog какой-нить
Maksim
который унюхав запрос стартует приложение
Maksim
при том вешается он на тот же порт, иначе по tcp получишь refuse
Maksim
триггером - обращение в ingress, а завершиться он должен сам
ри первом обращении получишь refuse. послькольку upstream не будет
Maksim
и nginx отдаст 502.
Maksim
Это нужно решать на стороне приложения. ТО есть должен быть некий watchdog......который будет держать соединение пока поднимает прилажуха, а потом его передаст
Andrey
Нет, он должен ждать пока стартнет нагрузка
Sergey
heroku же выгружает тоже как-то
Maksim
Там как раз вотдог стоит, который ждёт поднятие и передаёт запрос
Sergey
Ну вот такое с kubernetes и хочется сделать) в домашних условиях
Sergey
В гитхабе что-то не нашел ничего
Maksim
Потому что кубернетис тут не при чём)
Sergey
Ну как, окей есть watchdog поверх k8s, все равно
Maksim
он не поверх k8s
Maksim
он поверх твоего app
Maksim
Вся сетевая модель tcp/ip говорит, что должен быть конец. Нельзя соеденится с пустой....
Sergey
Так app нет никакого, пока его кто-то не поднимет
Maksim
Вот Watchdog должен принять tcp соединение и держать его, пока Апп не встанет
Maksim
Иначе нет tcp сессии
Sergey
Ну так это не app значит по опредлелению
Maksim
это что-то поверх апп
Maksim
куда прилетает tcp сессия. Nginx помойму такого не умеет
Sergey
что-то поверх апп в смысле зашивать что-то в докер контейнер или как?
Maksim
А это уже зависит от того как ты реализуешь подобное....
Sergey
ну вот не хочется так, иначе это надо все контейнеры менять.
Maksim
а в чем проблема удержании одного экземпляра с hpa ?
Sergey
В том что инженерная задача такая) Загружать и выгружать по требованию
Maksim
А требование это непосредственно попытка постройки tcp сессия?
Sergey
Требование просто чтобы экономить ресурсы. много маленьких контейнеров от которых не требуется быть 100% онлайн
Sergey
много в смысле дохрена
Maksim
нужно решить две задачи
Maksim
1. Поднять replica деплоя до 1
Maksim
2. Держать коннект.
Maksim
Со второй задачей можно попробывать справиться с timeout у nginx upstream
Maksim
ап вот как с первой я пока хз
Sergey
Не просто их очень много и не надо их держать в онлайне
Maksim
А в чем пролема то?
Maksim
Тебе в любом случае нужен конец tcp сессии, иначе refuse и 502
Maksim
А какая разница? много/мало, если они не кушают ресурс?
Sergey
Ну как память то жрут
Maksim
Тогда думай кто будет держать tcp сокет до появления апп..Потому что Другой конец должен быть
Sergey
должен быть понятно, я не спорю
Maksim
Модно повсить какую нить Java которая будет проксировать данные и ждать пока контейнер не поднимится
Shamil
Как я понял, это не обязательно веб-приложение, чуваку надо просто выполнить какую-то задачу, в контейнере, в рамках скрипта и убить контейнер, после выполнения.
Shamil
Покури немного докер — это базовый функционал, по-сути ты просто запускаешь в контейнере не процесс типа nginx -c ... а одноразовую задачу ls -l твоя задача превратить это в под с сервисом...
Sergey
не это приложение
Maksim
Как я понял, это не обязательно веб-приложение, чуваку надо просто выполнить какую-то задачу, в контейнере, в рамках скрипта и убить контейнер, после выполнения.
ему надо обработать запрос пользователя в несуществующем, на момент запроса, контейнере. При этом пользователь не должен получить out of service.
Shamil
Ну тогда ему надо что-то, что держит запрос, пока стартует приложение, это введение лишней сущности. Ну то есть так можно, только зачем?
Sergey
Экономить ресурсы, тк колво контейнеров -> ∞ и им не надо быть онлайн всегда, можно спинер крутить например пока грузится
Shamil
Не могу представить себе ситуацию, когда дешевле хранить данные, пока стартует контейнер, чем просто держать включенный контейнер.
Sergey
память дороже диска, разве нет?
Igor
в идеальном мире ты хотел бы наваять свой кастомный оператор, который будет смотреть на некие метрики и скедулить cron jobs в кубернетисе
Igor
из коробки ничего нету, это просто не в скоупе того, что делают в коробочном кубере. ну, оно и не надо (с)
Nick
Ребята, привет. Подскажите, как правильно перевести "external access controller"? Контекст такой: > But once you have a new k8s cluster ready, you need to set up additional services such as an external access controller.
Nick
Полный контекст: https://about.gitlab.com/2017/11/22/gitlab-10-2-released/#deploy-on-kubernetes-even-faster
Sergey
@lapanoid похоже хочет переизобрести cgi
не уверен, по тому что я прочитал, не похоже
Anton
ну по мне так это то что ты хочешь. on demand из веб сервера будет запускаться приложение для обработки запроса. да это ж CGI!
Sergey
https://en.wikipedia.org/wiki/Common_Gateway_Interface a CGI script executes at the time a request is made and generates HTML только заменить and generates HTML на поднять докер контейнер, а пока он поднимается держать запрос или крутить спиннер
Anton
мне кажется очень много операций на запрос будет происходить
Anton
какую то логику еще закладывать нужно чтобы потом что то останавливать. зачем все это?
Sergey
потому что не cpu bound, а memory bound
Anton
ну что ж, пилите тогда свою прослойку, если клиенты готовы будут при первом обращении ждать пока заведется приложение
Sergey
клиенты готовы, не переживайте)
G72K
и как определят что нагрузки больше нет?
Все давно придумано до нас: xinetd + kubectl + socat
bebebe
lil, у меня были случае когда в похожей связуе xinetd подвисал
Dmytro
Привет всех. Использую kube-dns (https://github.com/kubernetes/dns) Но заметил что автоматически прописывается запись А для всех доменов которые указываю в ingress (указывает на мастер ноду). Как отключить такую фичу?
Dmytro
или как указать правльный IP
G72K
Так мне оно и надо с 0 до 1
Может запустить все что надо и иметь дофига свопа? Проверку на своп можно отключить флагом kubelet