cent
Просто не указывай в качестве externalip айпишник ноды.
Можешь пример кинуть как шарить порт без указания ip?
Artem
Ребят, подскажите, а вы у себя ингресс контроллеры в кластере размещаете? Рассматриваю два варианта: 1 - поднять по ингресс контроллеру на каждом мастере, либо поднять отдельные ноды (2,3) для ингресс контроллеров
Artem
или может есть другой, более правильный вариант?
G72K
А разве kubeadm последних версий по дефолту ipvs не катит?
Ну тогда вопрос "нафига" к kubeadm :)
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