нового image, в под из двух реплик. Одна реплика заработала нормально, а другая нет. "Вскрытие" второго контейнера показало, что в нём пустой файл конфига веб сервера. Этот конфиг перезаписывается на этапе сборки образа (докер команда COPY) в последнем слое. Поскольку оба контейнера (реплики) используют один и тот же образ, возникает вопрос - какого лешего не загрузился этот слой в контейнер при его запуске?
а в первой реплике непустой?
Да. Проблема устранена удалением кривого пода.
скачай образ и проверь
Образ в порядке
проверь в статусе (или в describe) пода, что образ правильный используется, там должен быть sha образа
Сверял, совпадают
то есть в образе файл непустой, в работающем поде на этому образе файл пустой? не верю.
Образ состоит из слоёв, собираемых kaniko на этапе билда. Копирование конфига - последний из шагов docker файла, после него идёт заливка в регистри (гитлаб). После этого делается патч image в деплойменте, чтобы запустить новые поды с новым образом. И тут вдруг впервые за год наблюдается такая вот интересная история - не загрузился один (последний) слой образа (в одном из двух контейнеров)
Docker login? Может тут , недавно такая проблема была
Единственное что мне приходит в голову - гитлаб забанил айпи как раз перед скачиванием последнего слоя, но почему k8s не запаниковал и запустил контейнер с недокачаным образом... если было так
А он в статусе running?
Тут интересно, у него три рестарта было, но код 255, непонятно что это значит. Ну и после этих рестартов оно работало почти час пока я разбирался что за нах
Как раз статус unknown)
у тебя бы оно тогда с imagepullerror свалилось. Я тебе говорю, у тебя образ не тот.
Оно и валилось, только на деплое другого сервиса
ты уже там у себя разберись, где что валилось сначала. Если в образе есть файл, значит он и в контейнере есть. Вероятность сбоя в этом месте намного меньше вероятности твоего косяка
Вы вообще-то забываете, что образ - не один файл и у него есть слои. Не загрузился один слой из пачки. Поэтому получился образ с пустым файлом в контейнере. Причина почему такой под запустился, а не вылезла ошибка errpullimage, остаётся непонятной
я ничего не забываю. Загрузка образа требует загрузки всех его слоёв. Если у тебя загрузка завершилась успешно без загрузки одного слоя - то ты нашёл очень маловероятный баг.
Звучит странно - по идее если слой не скачался архив не развернется и ничего не запустится
Я тоже так думал, но тут налицо был факт такого события)
никогда такого не видел, если хотя бы один слой не скачался, пусть он даже пару байт занимает, контейнер не запустится вообще
Обсуждают сегодня