cent
Просто не указывай в качестве externalip айпишник ноды.
Можешь пример кинуть как шарить порт без указания ip?
Artem
Ребят, подскажите, а вы у себя ингресс контроллеры в кластере размещаете? Рассматриваю два варианта: 1 - поднять по ингресс контроллеру на каждом мастере, либо поднять отдельные ноды (2,3) для ингресс контроллеров
Artem
или может есть другой, более правильный вариант?
G72K
или может есть другой, более правильный вариант?
Я первые две ноды из обычных рабочих нод вешаю на статические ИП.
Artem
ну вот у меня кластер тоже небольшой будет
G72K
Поэтому я и хочу каждому деплойменту отдельный внешний ip давать. Очень хочется сделать без оверлейных сетей. Но я не знаю насколько это плохо.
Может с сетью, но на бриджах? Тогда у каждого пода будет свой ИП, но не будет оверхедов от оборачивания пакетов в другие пакеты. У @kvaps так все настроено
Andrei
вопрос если в 2-х ingress описан один и тот же потдомен что будет происходить если они в одном namespace и если они в разных namespace
Pavel
Докер. Проблема явно из-за того. что “наспамили” контейнерами
А какое количество контейнеров пыталось запуститься на ноде?
Rainbow
там cronjob стартавали и висли. Старт каждые 1-5 минут
Denis
штук 100, точно уже не скажу
Может быть лимиты кончились?
Rainbow
Только лимиты и спасли думаю. Просто удалить pending не помогло
Rainbow
судя по ошибкам там где-то скопился огромный буфер и куда не может пролезть.
Rainbow
Буфер уходит вместе с удалением /var/lib/docker, но крайне печально так делать. Просто может у кого есть догадки
Denis
Только лимиты и спасли думаю. Просто удалить pending не помогло
Я имею в виду что больше 110 подов запустилось на воркере
Rainbow
История про мстер* не упомянуо нюанс
Anton
вопрос если в 2-х ingress описан один и тот же потдомен что будет происходить если они в одном namespace и если они в разных namespace
я думаю что контроллер применит конфигурацию и не будет парится насчет валидации. там уж как дальше ваш ингресс реализован, nginx дубль заигнорит просто
Anonymous
я если честно порофлил немножко, я конечно читал и смотрел очень много видосов от cncf по сети в k8s, даже проходил курс от linux foundation, но это было полтора года назад, а теперь вещи начали отваливаться и абстракции протекать, а память невечная.. думал что мб просто выключатель гдето не тот поставил, но видимо придется снова все разребать и заново учить
ура! я нашел причину, как я вчера и предполагал, почему-то включение network policy для нод в GKE в настройках кластера обрубает openvpn походы в инет, хотя из подов и из моих сервисов все нормально в инет ходят, я накатал простейший конфиг для ingress,egress и это тоже не помогает 🤔🤔🤔🤔🤯🤯
Artem
Ребят, а glusterfs кто-нибудь юзает в кластере?
Puma
я юзал, его надо уметь готовить
Max
Может с сетью, но на бриджах? Тогда у каждого пода будет свой ИП, но не будет оверхедов от оборачивания пакетов в другие пакеты. У @kvaps так все настроено
А с такой схемой можно в случае падения пода в деплойменте, при стратегии Recreate привязать его ip-адрес к новому поду? (Сохранить исходный ip-адрес)
G72K
вопрос если в 2-х ingress описан один и тот же потдомен что будет происходить если они в одном namespace и если они в разных namespace
Зависит от ingress controller. В nginx-ingress оно, кажется, сортируется и один из них "выигрывает", остальные дубликаты игнорируются. Это если host и path совпадают
Max
Падают контейнеры, а не поды. Если рестартуют контейнер, то он сохраняет ИП пода
Ну мне нужно чтобы при падении ноды поды перезапускались на другой машине с теми же ip-адресами, что непонятного-то?
Max
Вы задавали другой вопрос. Я вам ничего не должен.
Я разве вам говорил что вы мне что-то должны?
Max
А с такой схемой можно в случае падения пода в деплойменте, при стратегии Recreate привязать его ip-адрес к новому поду? (Сохранить исходный ip-адрес)
Я прекрасно пояснил и дополнил про стратегию Recreate, она относится не к перезапуску контейнера в поде а к пересозданию пода
Max
Это две абсолютно разные вещи
Puma
ну зависит от того умеешь ты его готовить или нет
Rainbow
А на стороне докера есть какие-нибудь сообщения?
нет, докер в норме, запускает контейнеры без проблем. через docker run
G72K
Просто может быть что размер запроса превышает какой нибудь лимит в докере , он бы ошибку написал при этом.
G72K
т.е. маленькие запросы он принимает (== контейнеры стартуют нормально), а большие на удаление всех контейнеров разом - нет. Ну как теория, по хорошему надо б ошибку в коде кублета поискать
Artem
ну зависит от того умеешь ты его готовить или нет
не юзал ни разу, вот думаю его развернуть или цеф
Puma
цеф в мейнстриме нынче
Rainbow
т.е. маленькие запросы он принимает (== контейнеры стартуют нормально), а большие на удаление всех контейнеров разом - нет. Ну как теория, по хорошему надо б ошибку в коде кублета поискать
level=info msg="shim reaped" id=678ce097980cbb789e7a20527758926d51d027ca4cae06875cb0ea596ce958e4 level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" из того, за что глазз цепляется по docker
Никита
Поэтому я и хочу каждому деплойменту отдельный внешний ip давать. Очень хочется сделать без оверлейных сетей. Но я не знаю насколько это плохо.
Тебе нужно чтоб сеть сервисов была доступна вне кластера, этого можно добиться несколькими способами.
Никита
Можешь пример кинуть как шарить порт без указания ip?
NodePort? https://kubernetes.io/docs/concepts/services-networking/service
Rainbow
т.е. маленькие запросы он принимает (== контейнеры стартуют нормально), а большие на удаление всех контейнеров разом - нет. Ну как теория, по хорошему надо б ошибку в коде кублета поискать
getKubeletContainers failed: rpc error: code = ResourceExhausted desc = grpc: trying to send message larger than max (8389176 vs. 8388608) GenericPLEG: Unable to retrieve pods: rpc error: code = ResourceExhausted desc = grpc: tryi ng to send message larger than max (8389176 vs. 8388608) skipping pod synchronization - [PLEG is not healthy: pleg was last seen active 4h56m17.800 У kubelet, пойду гуглить про PLEG Там вагон всякого про send messages larger
Andrey
у вас поди куча Exited контейнеров
https://github.com/kubernetes/kubernetes/issues/63858
Rainbow
у вас поди куча Exited контейнеров
ну да, cronjob вбесился ночью
Vadim
докер сообщает о них кубелету, отчего он дохнет из-за ограничения на размер кубелета
Sergei
а вот эти проблемы все с кучей контейнеров, в случае с containerd не лечатся ли случаем?
Rainbow
докер сообщает о них кубелету, отчего он дохнет из-за ограничения на размер кубелета
@vrutkovs @inish777 спасибо, дочитаю, догуглю. Лечение в виде удаления /var/lib/docker звучит не так страшно тогда.
Vadim
ну да, cronjob вбесился ночью
maximum-dead-containers настраивать надо
Stefan
в общем посидев, покопавшись еще, попробовал вытащить в мир, в sg порты 30000 - 32767 на мастере, по ним приложухи доступны тупо не работает 80 порт Оо если я на мастере открою 80 порт, то сразу connection refused, а если удалю обратно, то connection timeout..... че за хрень???
учитвая что у меня был не легальный домен(вымышленный), я попробовал всё таки получить нормальный домен на(freenom.com), изменил NSы freenomа на амазоновские, создал hosted zone в R53 для нового домена и создал алиасную А запись на доменное имя балансера и завелось!!! НАКОНЕЦ-ТО! ну и в конфиге сервиса траефика, поменял type: NodePort на type: LoadBalancer вдруг кому-то пригодится...
cent
NodePort? https://kubernetes.io/docs/concepts/services-networking/service
Да, вроде так взлетело. Спасибо
Vladimir
Скажите кто знает - у пода генерируется имя, а хочется делать вывод лога контейнера скриптом
Vladimir
Получается надо делать некий парсер вывода команды kubectl get pod -n tst и искать этот под, имеющий в названии статическую часть
Vladimir
Нельзя ли как-то по-проще?
George
т.е. типа селектор нужен?
Vladimir
Хз, направьте в нужное русло.
George
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
George
лейблы раставь
Vladimir
И по лейблу запрашивать логи у контейнера?
Vladimir
Ок, спасибо, попробую
George
почему нет-то?
George
только не по лейблу напрямую. Я себе вижу это как
George
ты запрашиваешь поды, у которых нужные лейблы. Далее уже матчишь контейнеры
George
это явно идеологически более верное решение, чем матчить названия
George
т.к. названия завтра начнут по какой-то другой схеме генерировать и твоя схема накроется медным тазом
George
к тому же, лейблы ты сам расставляешь, т.е. сам контролируешь этот процесс и можешь делать выборки разного типа
George
ну, например, по среде (dev/prod), по клиенту, по типу сервиса и т.п
George
@Rodgelius все, договорились?
Vladimir
Да, все работает!
Vladimir
@Rodgelius все, договорились?
Спасибо за подробное разъяснение.
Vladimir
Только вот ещё нюанс с которым я сейчас столкнулся : error: only one of follow (-f) or selector (-l) is allowed
George
там же есть пример
George
kubectl get pods -l environment=production,tier=frontend