172 похожих чатов

Есть дев кластер, туда был совершён путём kubectl patch деплой

нового image, в под из двух реплик. Одна реплика заработала нормально, а другая нет. "Вскрытие" второго контейнера показало, что в нём пустой файл конфига веб сервера. Этот конфиг перезаписывается на этапе сборки образа (докер команда COPY) в последнем слое. Поскольку оба контейнера (реплики) используют один и тот же образ, возникает вопрос - какого лешего не загрузился этот слой в контейнер при его запуске?

23 ответов

19 просмотров

а в первой реплике непустой?

Юрий- Автор вопроса
Andrey Kartashov
а в первой реплике непустой?

Да. Проблема устранена удалением кривого пода.

Юрий- Автор вопроса
Юрий
Образ в порядке

проверь в статусе (или в describe) пода, что образ правильный используется, там должен быть sha образа

Юрий
Сверял, совпадают

то есть в образе файл непустой, в работающем поде на этому образе файл пустой? не верю.

Юрий- Автор вопроса
Andrey Kartashov
то есть в образе файл непустой, в работающем поде ...

Образ состоит из слоёв, собираемых kaniko на этапе билда. Копирование конфига - последний из шагов docker файла, после него идёт заливка в регистри (гитлаб). После этого делается патч image в деплойменте, чтобы запустить новые поды с новым образом. И тут вдруг впервые за год наблюдается такая вот интересная история - не загрузился один (последний) слой образа (в одном из двух контейнеров)

Юрий
Образ состоит из слоёв, собираемых kaniko на этап...

Docker login? Может тут , недавно такая проблема была

Юрий- Автор вопроса
Vitaliy Davidov
Docker login? Может тут , недавно такая проблема б...

Единственное что мне приходит в голову - гитлаб забанил айпи как раз перед скачиванием последнего слоя, но почему k8s не запаниковал и запустил контейнер с недокачаным образом... если было так

Юрий- Автор вопроса

Тут интересно, у него три рестарта было, но код 255, непонятно что это значит. Ну и после этих рестартов оно работало почти час пока я разбирался что за нах

у тебя бы оно тогда с imagepullerror свалилось. Я тебе говорю, у тебя образ не тот.

Юрий- Автор вопроса
Andrey Kartashov
у тебя бы оно тогда с imagepullerror свалилось. Я ...

Оно и валилось, только на деплое другого сервиса

ты уже там у себя разберись, где что валилось сначала. Если в образе есть файл, значит он и в контейнере есть. Вероятность сбоя в этом месте намного меньше вероятности твоего косяка

Юрий- Автор вопроса
Andrey Kartashov
ты уже там у себя разберись, где что валилось снач...

Вы вообще-то забываете, что образ - не один файл и у него есть слои. Не загрузился один слой из пачки. Поэтому получился образ с пустым файлом в контейнере. Причина почему такой под запустился, а не вылезла ошибка errpullimage, остаётся непонятной

Юрий
Вы вообще-то забываете, что образ - не один файл ...

я ничего не забываю. Загрузка образа требует загрузки всех его слоёв. Если у тебя загрузка завершилась успешно без загрузки одного слоя - то ты нашёл очень маловероятный баг.

Юрий
Вы вообще-то забываете, что образ - не один файл ...

Звучит странно - по идее если слой не скачался архив не развернется и ничего не запустится

Юрий- Автор вопроса
Aleksey Lazarev
Звучит странно - по идее если слой не скачался арх...

Я тоже так думал, но тут налицо был факт такого события)

Юрий
Вы вообще-то забываете, что образ - не один файл ...

никогда такого не видел, если хотя бы один слой не скачался, пусть он даже пару байт занимает, контейнер не запустится вообще

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта