Maksim
они размазаны по кластеру
Maksim
и в один прекрасный момент одна из нод теряет связь с БД.
Maksim
и того у тебя минмум 1 под не может обрабатывать инфу
Maksim
при 8 подах это 12.5% отказов в обслуживание
Oleksandr
ну мониторить коннект к внешней бд
Oleksandr
или на внешней БД мониторить коннекты
Maksim
А дальше что?
Maksim
что с приложением то делать?
bebebe
ситуацию я понял. вы вопрос сформулируйте
Maksim
как k8s обеспечить отсутвия 12.5% отказа в данном случае?
Oleksandr
ну к примеру в приложение встроить проверку к бд и если ее нет - алертовать и говорить о том что оно не рабочее
bebebe
пока что мой ответ: если под потерял доступ к данным, на него надо перестать слать запросы
Oleksandr
а почему вы эту задачу на кубер возлагаете?
Maksim
ну к примеру в приложение встроить проверку к бд и если ее нет - алертовать и говорить о том что оно не рабочее
это лишь перезапустит под и через 5 сек он снова будет говорить что не рабочий и упадёт в CrachLoop
Maksim
пока что мой ответ: если под потерял доступ к данным, на него надо перестать слать запросы
Для это и существует readness проба. как только ответ по ней не "ок", под исключается из сервиса и не получает трафик
Vitalii
service discovery через kube-apiserver не хуже dns srv например в консуле. Один чёрт переделывать, если платформа меняется.
bebebe
итак...?
Maksim
а почему вы эту задачу на кубер возлагаете?
если БД живёт в кубере и кластерированна, то её FT обеспечивается кубером
Maksim
итак...?
что и так?
Maksim
ВЫ не проверяете коннект к БД, соотвенно кубер не знает что под потерял связь с БД и не может осущевтлять обработку данных. а значит продолжает слать трафик
bebebe
еще раз, если под потерял доступ к базе - на него нужно перестать слать запросы это верное утверждение
bebebe
если под после дестроя поднимается по каким-то причинам на той же ноде, что потеряла коннект до базы, он не пройдет readiness пробу и не включится
bebebe
нагрузка пойдет на другие поды этого сервиса на других нодах (в общем случае, если нет селекторов которые стреляют себе в ногу)
bebebe
я не говорил, а вы?
Maksim
и я не говорил) Более того я точно знаю, что она как и health работает постоянно
Maksim
и если health отвечает за рестарт контейнера, то readness отвечает за подачу трафика на под
Maksim
health проба отвечает на вопрос Жив ли под Readness отвечает на вопрос, можно ли давать ему трафик
bebebe
зачем вы это пишите?
Maksim
за тем что коннект к базе нужно проверять в readness пробе
bebebe
окей,я подозреваю что мы не одинаково понимаем фразу: можно в своём приложении хэндлер написать, который проверяет нужные вещи: например что кэши некие прогреты для readinessProbe
Maksim
Возможно
Victor
Где в Helm крутить что попадет в entries: redis: - apiVersion: v1 urls: - http://127.0.0.1:8879/charts/redis-0.1.0.tgz helm repo index redis --url CUSTOM_URL Разве не CUSTOM_URL должен туда попадать?
Victor
Вот про это конкретно - http://127.0.0.1:8879/charts
Victor
а, локальный репозиторий генериться на команде package, думал на шаге index плохо мне дается helm
G72K
потому что приложение должно работать на абстрактном окружении и не знать о его особенностях
Речь вроде бы не шла о том чтобы в k8s ходить. Предложение же было написать скрипт, подсунуть его readinessProbe
Anatoliy
Народ, ткните пожалуйста носом что я не так делаю? Запускаю : ansible-playbook -i inventory/inventory.cfg cluster.yml Выдает: TASK [bootstrap-os : Remove require tty] *************************************** Tuesday 14 November 2017 21:03:19 +0300 (0:00:00.026) 0:00:01.718 ****** и дальше замирает и останавливается, на сервере в этот момент ничего не делается
Anatoliy
У меня есть подозрение что оно туда не доходит, может ему где то явно надо ключ подцепить что бы он залогиниться смог на сервер?
bebebe
ansible -i /path/to/inventory.cfg -m ping all
bebebe
@Visteras ^^^
Anatoliy
@Visteras ^^^
SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh
Anatoliy
Видимо всё же где то ошибся( буду искать дальше)
Anatoliy
народ, я прописал cgroup_enable=memory swapaccount=1 в grub, смотрю на docker info | grep group и вижу Cgroup Driver: cgroupfs WARNING: No cpu cfs quota support WARNING: No cpu cfs period support Но варнингов быть вроде не должно?
Anatoliy
Сталкивался кто?
Logan
коллеги, nginx ingress научился работать с доменными именами? Или без шансов?
Sergey
Есть плагин экстернал днс
Sergey
Он умеет делать запись в тот же самый роут53
Logan
я не про это. Траефик позволяет вывесить несколько ингрессов на один 80 (к примеру) порт, различая их по имени. Nginx так раньше не умел. Теперь умеет?
Oleksandr
+
Logan
пример из документации можно? в кубе 1.6 не умел точно
Oleksandr
вы про nginx?
Logan
да
Oleksandr
name based virtual host не?
Oleksandr
http://nginx.org/ru/docs/http/request_processing.html
Logan
пример документации если можно. Чтобы я был уверен, что мы оба говорим об одном и том же
Oleksandr
выше
Logan
пример именно с кубом и с nginx в роле ingress-controller.
Logan
я не настолько слабо подготовлен
Oleksandr
https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting
Logan
именно то, что надо, спасибо. Научился-таки, здорово
Oleksandr
👍
Logan
осталось разобраться, как туда дописывать свои правила - и будет вообще огонь решение 🙂
Oleksandr
update-grub && reboot
Anatoliy
update-grub && reboot
пробовал, ничего не изменилось
Anatoliy
Собственно по этой причине и спрашиваю..(
Igor
пробовал, ничего не изменилось
может, у тебя какой-нибудь Debian Jessie или другой ультра-консервативный дистрибутив, который просто это не поддерживает в ядре?
Anatoliy
может, у тебя какой-нибудь Debian Jessie или другой ультра-консервативный дистрибутив, который просто это не поддерживает в ядре?
вот я щас тоже так думаю. но если взять тот же kubespray то вроде там есть правила для установки туда? Что вообще лучше взять за основную ОС если нет возможности использовать CoreOS?
Khramov
пример из документации можно? в кубе 1.6 не умел точно
Он и в 1.6 работает, у нас сейчас стоит и все ок
Alex
Ребята, а можно к вам с глупыми вопросами? Как значения из environments (например из DaemonSet) использовать в подключаемом к поду ConfigMap?
Anton
обычно из configmap получают значение для environments
Anton
тоесть берут ключ configmap и используют как значение для какого то env
Anton
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-a-pod-environment-variable-with-data-from-a-single-configmap
Alex
У меня в configmap конфигурация для filebeat'а. Очень хочется подсовывать туда хостнейм эластика
Anton
как тут описано
Anton
configmap статичный ведь. используется "как есть". можно задать его сразу с нужным адресом
Alex
Ага, значит я не в ту сторону думаю. Спасибо
Rinat
всем привет, у кого была такая ошибка? etcd invoked oom-killer: gfp_mask
Rinat
kubespray/azure