Dmytro
больше года назад уже помню был прекрасный баг, кажется еще в 1.10 с логдрайвером journald, если journald рестартовал по какой-то причине то докер выходил с exit 0 - типа pipe failed но я выйдут с exit 0 ну и до кучи systemd unit был кривой у нас и если docker вышел с 0 то systemd его не рестартовала
Dmytro
вот как такую хрень задебажить? в лог докер пишет что выходит и всё, больше ничего
Andor
это был баг в голанге :)
Dmytro
угу до 1.6 нельзя был pipe fail обрабатывать
Dmytro
хипстеры кругом а ты сиди долбись
Andor
да стыдоба
Dmytro
из кубернетес багов - например баг с revision history, после какого-то момента она переполняется или я хз но больше нельзя деплоить. Меняешь деплоймент а деплой не идет
Andor
огонь
Andor
приходится пересоздавать?\
Dmytro
установка revision history лимита в 1.4 была вообще сломана, в 1.5 работает но все равно в какой-то прекрасный момент получаешь такюу же ситуацию
Dmytro
приходится пересоздавать?\
нет, нужно удалить все replication controller
Dmytro
тогда деплоймент отдупляется и начинает работать
Dmytro
а т.к. нет флага удалить все rc кроме текущего активного то приходится удалять все, в результате и поде пересоздаются
Dmytro
ну и вот тут можно огрести что в этот момент идет деплой (у нас CD) и ты получишь по 2 копии некоторых контейнеров
Dmytro
одна нормальная а вторая orphaned (rc удалил куб а под еще нет)
Andor
и это надо отслеживать как-то
Dmytro
и тогда нужно удалить все поды чтобы rc их пересоздал...
Dmytro
ну оно видно в kubectl get pods что два контейнера от разных rc бежит
Dmytro
* два пода
Dmytro
и все это не так страшно, но вот если у вас приложение которое нельзя чтобы 2 копии бежало тогда уже весело
Andor
а волюмы оно тоже монтировало по два раза?
Roman
Кстати о вольюмах - баг в 1.8.5 когда нельзя было в AWS монтировать EBS
Roman
Так я перелез на 1.9.3 сразу
Andor
у нас щас 1.8.4
Andor
не советуете обновляться, значит? :)
Andor
а обновляться по кусочкам так и нельзя? надо сразу весь кластер?
Dmytro
а волюмы оно тоже монтировало по два раза?
вольюмы там много было веселья, EBS же сервис и его монтируешь - вызываешь апи, апи отвечает что типа не могу приаттачить сейчас - попробуй через 2 секунды, 5 секунд, и там увеличивающийся таймаут
Dmytro
куб сначала вообще клал болт на то что ему говорило апи и каждую секунду пыталось маунтить, потом вроде стал читать что ему пишет апи но как-то криво время считал
Dmytro
в итоге это был адский треш и можно было в 1.4.х и ранее ебаться 2 часа пытаясь приаттачить EBS вольюм
Dmytro
еще кажется был баг в 1.3 или 1.4 (но плохо уже помню) что он пытался приататчить вольюм из другой AZ
Dmytro
а вот со statefulset с dynamic EBS provisioner до сих пор этот баг есть
Dmytro
вот хочешь ты значит в этом statefulset чтобы был под на 2 контейнера и у каждого свой вольюм (или даже кажется если один контейнер и унего 2 вольюма то та же байда) - а вот не выйдет, никак
Dmytro
потому что dynamic EBS provisioner создает ebs volumes в разных AZ по кругу, и получит твой под два вольюма в разных AZ
Dmytro
когда смотрел последний раз была кажется 1.7 актуальная версия и баг не был пофикшен, подозреваю и в 1.9 он все еще есть
Andor
у меня с 1 волюмом в стейтфулсете всё ок
Andor
тьфу-тьфу
Andor
два не пробовал
Andor
Dmytro хочу статью про фейлы кубера %)
Dmytro
да смысл, открываешь их багтрекер - и вот тебе все они
Dmytro
можно писать юмористические романы
Andor
ну багтрекер это абстрактные баги
Andor
а личный рассказ - совсем другое
Nik
привет ребята. Поделитесь опытом, есть у кого CIки в кластере? Как решаете вопрос со сборкой докер-контейнеров? Прокидываете /var/run/docker.sock?
Nik
по https+сертификату?
G72K
по https+сертификату?
Мы не боимся что одни девелоперы украдут имаджи других девелоперов, так что просто по NetworkPolicy. В недрах туду закопан тикет с планом по подкрутке докера через плагин авторизации, чтобы можно было только собирать образы, но не запускать
Nik
спасибо!
G72K
спасибо!
Сразу смотрите docker build —cache-from , много времени сэкономите
Nik
у меня на самом деле есть альтернатива - сделать отдельный инстанс для билда в AWS. Я сначала это попробую.
Nik
хотелось бы изучить негативный опыт по поводу dind, перед тем как пускаться во все тяжкие
Vlad
хотелось бы изучить негативный опыт по поводу dind, перед тем как пускаться во все тяжкие
Он очень медленный и не работает кеширование при сборке образов. Так-же его нужно запускать в privileged режиме. А сейчас даже systemd можно запускать в контейнере в обычном режиме.
G72K
хотелось бы изучить негативный опыт по поводу dind, перед тем как пускаться во все тяжкие
Негативный опыт в том, что если его дергать на каждый билд, то докеру больше шанс что поплохеет (изза privileged). Ну и запускать его внутри CI бобы, значит давать всякой кривой копипасте рут доступ на сервер )
Vlad
И сам автор dind не рекомендует его использовать. Он разрабатывался для отладки самого dockerd.
Nik
именно поэтому я думал об отдельной ноде, на которой через affinity запущен только один образ jenkins-slave, ну и туда прокинуть /var/run/docker.sock
Andor
да слейв-то пофиг где запущен, главное сокет дать
Andor
ну и сокет может быть по сети
Dmytro
по поводу того что билдить в кластере идея не очень - поддержу, особенно если это прод кластер
Dmytro
большинство CI умеет стартовать AWS и прочие инстансы через апи и потом их тушить через время - я бы сотрел в эту сторону
Nik
у нас это планируется в инфраструктурном кластере, куда вынесено все, что не имеет прямого отношения к пользовательским окружениям
Nik
и для лучшей утилизации его ресурсов, я думаю как бы сделать так, чтобы наоборот, съехать с EC2-slave-plugin
Dmytro
а что в нем крутится? небось какие-то логи и метрики которые вы не хотите ни кому-то чтобы вдруг слили непонятным контейнером с докерхаьа ни чтобы они пропали
Nik
ну там только х5 инстансы умеют, на сколько я знаю, посекундно, но вроде бы там только Amazon linux
Dmytro
Когда по секундам тарификация EC2 будет, то имеет смысл, до тех пор это ппц
так уже полгода как https://aws.amazon.com/blogs/aws/new-per-second-billing-for-ec2-instances-and-ebs-volumes/
Dmytro
Per-second billing is not currently applicable to instances running Microsoft Windows or Linux distributions that have a separate hourly charge. Marketplace AMIs that do not have a separate hourly charge are eligible for per-second billing.
Dmytro
только такое ограничение
Dmytro
но это я так понимаю для всяких платных AMI
Dmytro
EC2 plugin дженкинса спот инстансы умеет?
Nik
да.
Nik
но они нам не подходят.
Nik
но это я так понимаю для всяких платных AMI
ключевой вопрос - можно ли кастомные AMI запускать посекундно?
Nik
хотя, это уже наверное оффтопик. Сорри.
G72K
Да, имеет смысл если время старта несопоставимо с временем жобы
Dmytro
в блоге написано что да, а в чем проблема?
Dmytro
это ж не инстанс считает а супервизор
Dmytro
еще как идея вот интересный проект https://www.slideshare.net/majeru/autospoting-an-automated-ec2-spot-market-bidder
Dmytro
это больше для кластера и для продакшена то и для CI почему нет