Kyrylo
увеличение этого порога с 150 до 300 не помогло
Vadim
в нжинксе тоже Lua, не нужно плодить сущности
мало ли где Lua есть, только вот решение "для редактирования yaml теперь вот вам язык программирования" как минимум странное
Dmytro
мало ли где Lua есть, только вот решение "для редактирования yaml теперь вот вам язык программирования" как минимум странное
не страннее языка программирования для самапольного языка конфигурации ака нжинкс конф
Kyrylo
рабочего какого-то решения данной проблемы не увидел, обновлять кубер не хотелось, увидел что один из вариантов - замена на коре-днс. и типа на него кубер перешел в новых версиях (или переходит?)
Dmytro
ну и опять же, лучше взять стандартный язык а не изобретать свой как ksonnet
Dmytro
нет, это аргумент о стандартизации
Kyrylo
не резолвили это обычно про днс же
сорри, не правильно выразился. Он не получал ответа от сервиса
Dmytro
сорри, не правильно выразился. Он не получал ответа от сервиса
обычно это сообщение про 150 запросов не приводит к рестарту (по крайней мере из моих наблюдений), а вот низкие цпу лимиты - да (т.к. не отвечает kube-dns контейнер за таймаут)
Kyrylo
цпу лимиты были дефолтные
Dmytro
если не помогает убрать или поднять лимиты - нужно увеличивать количество реплик. Но прежде стоит посмотреть на логки dnsmasq и ndots у подов
Kyrylo
первое решение которое сделал - увеличил колличество под с кубе-днс до 3х
Dmytro
они достаточно низкие, если у вас приложения не кешируют днс на какое-то время а фигачат кучу днс запросов - нужно увличить
Kyrylo
падений стало меньше, но падали поочереди все поды с кубе-днс ;)
Dmytro
например, у соседнй команды было пхп приложение которое на каждую страницу ходило до 400 раз в мемкеш по днс
Dmytro
они там наебались...
Kyrylo
да, учту при дальнейших вопросах
Evgeny
обычно это сообщение про 150 запросов не приводит к рестарту (по крайней мере из моих наблюдений), а вот низкие цпу лимиты - да (т.к. не отвечает kube-dns контейнер за таймаут)
у меня сейчас в кластере две ноды - одна с ub18, вторая - ub16. kube-dns раскидал два пода на эти ноды. на ub16 - всё работает без рестартов, на ub18 под растартуется через 3-5 минут с тем же сообщением
Dmytro
да, учту при дальнейших вопросах
еще вот на секцию Pod’s DNS Config посмотрите тут https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pods
Dmytro
если вкратце, то по дефолту обычно стоит ndots:5 и на каждый днс резолв летит вместо одного запроса пачка вида <dns>.svc.local, т.е. все внешние ресурсы сначала внутри кластера
Dmytro
плюс еще летят всегда ipv4 и ipv6 резолвы
Dmytro
все это можно увидеть в логах dnsmasq если их включить
Dmytro
т.е. на один днс резолв от приложения выходит до 10 (по моим прикидкам) днс запросов
Dmytro
у меня сейчас в кластере две ноды - одна с ub18, вторая - ub16. kube-dns раскидал два пода на эти ноды. на ub16 - всё работает без рестартов, на ub18 под растартуется через 3-5 минут с тем же сообщением
интересно а cpu quota usage одинаковый? и еще я бы попробовал поды с ноды с у18 переместит на у16 а с той на у18, может просто больше днс запросов генерят поды на этой ноде а днс запросы сервис роутит на ближайший под - т.е. на это же ноде
Kyrylo
Да, видел, как вариант снижения нагрузки - прописывание полного адреса сервиса вплодь до точки на конце. Не помогло, но на всякий пожарный теперь делаю так
Dmytro
квота одинаковая но вот сколько из квоты использовано одним подом и сколько другим?
Evgeny
по логам получается сначала dnsmasq отваливается I0725 15:08:54.586875 1 nanny.go:116] dnsmasq[18]: using nameserver 127.0.0.1#10053 for domain cluster.local I0725 15:08:54.586885 1 nanny.go:116] dnsmasq[18]: using nameserver 127.0.0.53#53 I0725 15:08:54.586893 1 nanny.go:116] dnsmasq[18]: read /etc/hosts - 7 addresses I0725 15:12:48.143322 1 nanny.go:116] dnsmasq[18]: Maximum number of concurrent DNS queries reached (max: 150) I0725 15:12:58.154825 1 nanny.go:116] dnsmasq[18]: Maximum number of concurrent DNS queries reached (max: 150)
Dmytro
я бы еще пробовал все-таки включить логи dnsmasq посмотреть что там приходит то
Evgeny
потом sidecar перестает метрики получать I0725 15:08:59.144350 1 dnsprobe.go:75] Starting dnsProbe {Label:kubedns Server:127.0.0.1:10053 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1} I0725 15:08:59.144397 1 dnsprobe.go:75] Starting dnsProbe {Label:dnsmasq Server:127.0.0.1:53 Name:kubernetes.default.svc.cluster.local. Interval:5s Type:1} W0725 15:12:51.207223 1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:39414->127.0.0.1:53: i/o timeout W0725 15:13:05.150423 1 server.go:64] Error getting metrics from dnsmasq: read udp 127.0.0.1:44531->127.0.0.1:53: i/o timeout
Dmytro
я себе поставил во всех подах приложений ndots:1 потом что приложение ходит только во внешние ресурсы по FQDN в другие поды в этом неймспейсе по имени сервиса
Dmytro
нет, я про логи днс запросов
Dmytro
т.е. добавить флаг --log-queries в dnsmasq https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dns/kube-dns/kube-dns.yaml.base#L169
Etki
мало ли где Lua есть, только вот решение "для редактирования yaml теперь вот вам язык программирования" как минимум странное
> вот вам декларативная конфигурация > вот вам способ задавать ее programmatically ансибл в вакууме
Dmytro
А как делал? сразу при сборке контейнера?
нет, там же по ссылке я кидал - можно поду dnsConfig указать
blkmrkt
Нигде не нахожу пояснения. Наверное это должно быть понятно всем, но до меня не доходит: Куб предназначен для работы исключительно внутри локальной сети, или разницы нет? Я ставил сервер отдельно, и добавил к нему 3 baremetal ноды по их публичным ип. Все вроде работало. Но можно так делать вообще?
blkmrkt
Нигде не нахожу пояснения. Наверное это должно быть понятно всем, но до меня не доходит: Куб предназначен для работы исключительно внутри локальной сети, или разницы нет? Я ставил сервер отдельно, и добавил к нему 3 baremetal ноды по их публичным ип. Все вроде работало. Но можно так делать вообще?
Мой юзкейс - арендовать в облаке большой объем ssd не выгодно, поэтому пользуюсь выделенным железом. Но нужно иногда запускать мелкие инстансы, пользоваться s3 и прочими фичами облаков. Вот куб выглядит суперским решением, но можно ли его им пользоваться когда все ноды не в одной частной сетке? Кстати может есть какое надежное решение для меш-vpn по типу хамачей, чтоб можно было добавлять линукс машины туда одной командой по ssh?
Aleksei
Что?! А сеть кубера на что?
Lex
в нжинксе тоже Lua, не нужно плодить сущности
Ну как бы императивщина для генерации декларативщины это то еще счастье
Anonymous
Привет. Подскажите пожалуйста я насетапил liveness и readinessProbe но после этого у меня валится команда kubectl wait. Не подскажете в чем может бть проблема? может я неправильно настраиваю initialDelaySeconds или что то такое?
Dmytro
Ну как бы императивщина для генерации декларативщины это то еще счастье
т.е. все шаблонизаторы хтмл, xml, yaml и т.д. - это плохо?
Lex
Эм, шаблонтзаторы плохи тем, что могут превратится в php
Lex
А этот сразу php
Lex
Только с lua
Lex
Вот есть тот же hcl, или hcl2, кривоват конечно, но все равно получше как по мне чем писать на lua
Dmytro
ну с такой аргументацией дальше дискуссию вести не вижу смысла
blkmrkt
использовать можно, на том же ДО и хетцнере по из коробки нет приватной сети. Но наверное стоит шифровать траффик между нодами
Я сначала вообще думал что в кластер куба можно кидать любые ноды откуда угодно, пока мастер имеет публичный ип: baremetal сервер, виртуалка на aws, виртуалка фри тира в облаке Алибаба, распберри пай под диваном, умный электрочайник и тому подобное. Так нельзя делать?
Dmytro
можно то можно, но сеть ведь между ниим публичная
Dmytro
со всеми вытекающими
blkmrkt
Dmytro
ну если настроите - будет
Dmytro
по умолчанию нет конечно, либо ipsec на уровне нод или на уровне overlay network мжду подами - через weave (и может другие CNI это умеют, не уверен)
cent
А как можно остановить весь k8s кластер?
Logan
Стопануть все узлы по одному
cent
Мисье знает толк)
Ну, просто поставил себе кубер локально для управления докер контейнерами. Ну, чтобы просто не забывать как там все работает. Потому что если не пользуешься долгое время, то потом вообще ничего не можешь сделать. Вот и решил docker-compose заменить на кубер. Но когда мне этот кластер не нужен, то не хочу тратить ресурсы ноута. Поэтому и задался проблемой остановки всего кластера на время.
Nata
Ansible -a kubecluster "systemctl stop kubelet" 😀
cent
Ну, вроде как. Но оверхед же будет приличный.
Rainbow
Он же в виртуалках. Запаузить не выходит?
cent
за счет сетки?
Ну, да. Лоад балансер, сетевая ФС для БД и прочее.
cent
Ansible -a kubecluster "systemctl stop kubelet" 😀
В смысле, остановить kubelet и потом все контейнеры потушить?
Etki
cent
балансер и фс для редиса 🤔🤔🤔
Ну, да. Балансер же в кубере встроен. А дефолтная конфигурация редиса синкает БД на диск раз в минуту.
Etki
ага, в форке
Etki
там не балансер встроен, а айпитейблы
cent
там не балансер встроен, а айпитейблы
https://github.com/kubernetes/ingress-nginx - ну, не одни iptables
Anton
Ну, вроде как. Но оверхед же будет приличный.
Это вы проверяли? Оверхед на что?
Etki
на докир )
Anton
Тоесть из оверлей сети через нат ломится на виртуалку с редисом лутше?)
Anton
Ну, да. Балансер же в кубере встроен. А дефолтная конфигурация редиса синкает БД на диск раз в минуту.
Bgsave конечно та ещё ерунда. Aof интереснее выглядит в плане надежности, всетаки почаще на диск сбрасывать нужно, но это делает форк или фоновый тред, асинхронность туда завезли. Так что вероятно потребуется памяти больше если запись активная. Ну и совсем упоротым нужно быть чтобы гонять клиентов к редису внутри через ingress controller
Anton
Хотя вот всякое межсервисное взаимодействие по http через ингресс заворачивать договорились, чтобы не думать в том же ты кластере находишься или нет. Да и если клиенту внешнему отдать нужно будет урл, чтобы не хранить у себя и внутренние и внешние адреса
cent
Он же в виртуалках. Запаузить не выходит?
О каких виртуалках идет речь?
Anton
О каких виртуалках идет речь?
Какие варианты для редиса, где в его разместите?
Михаил
это аргумент "ачотаково, все так делают"?
Им корона не жмёт интересно?)
Михаил
ну с такой аргументацией дальше дискуссию вести не вижу смысла
Вот ты можешь объяснить зачем они тащат Lua?