[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/k8s-crashloopbackoff":3,"mdc-7ncxju-key":610,"mdc-tsasx5-key":621,"mdc-t8q4qm-key":659,"mdc-kwnrmd-key":667,"mdc-ii2jhr-key":684,"mdc-wv3itg-key":700,"mdc--bfagcx-key":708,"related-/guides/linux/k8s-pod-debugging,/errors/linux/docker-container-exit-code,/guides/linux/k8s-resource-limits":725},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":545,"code":546,"createdAt":547,"description":548,"difficulty":549,"draft":550,"estimatedTime":551,"extension":552,"faq":553,"howToSteps":563,"howToTotalTime":576,"image":545,"keywords":577,"locale":586,"meta":587,"navigation":588,"path":589,"platform":590,"related":591,"section":595,"seo":596,"severity":597,"stem":598,"summary":599,"tags":600,"twitterCreator":545,"twitterSite":545,"type":608,"updatedAt":547,"__hash__":609},"content_ru/errors/linux/k8s-crashloopbackoff.md","CrashLoopBackOff в Kubernetes: диагностика и решение",[7,8,9,10],"Kubernetes 1.24+","OpenShift 4.10+","Rancher 2.7+","Linux-ноды (Ubuntu 20.04/22.04)","FixPedia Team",{"type":13,"value":14,"toc":535},"minimark",[15,20,33,44,48,110,114,119,126,179,190,241,262,265,269,276,426,429,433,436,462,475,484,488,491,531],[16,17,19],"h2",{"id":18},"что-означает-ошибка-crashloopbackoff","Что означает ошибка CrashLoopBackOff",[21,22,23,24,28,29,32],"p",{},"Статус ",[25,26,27],"code",{},"CrashLoopBackOff"," в выводе ",[25,30,31],{},"kubectl get pods"," сигнализирует, что контейнер внутри пода завершает работу с ошибкой сразу после запуска, а kubelet пытается автоматически его перезапустить. После нескольких неудачных попыток Kubernetes включает механизм экспоненциальной задержки: пауза между рестартами увеличивается, чтобы избежать бесконечной нагрузки на ноду.",[21,34,35,36,39,40,43],{},"Ошибка появляется в кластере на базе Linux-нод, когда приложение, скрипт инициализации или runtime-среда не могут корректно стартовать. Сопутствующий текст в событиях пода обычно содержит фразу ",[25,37,38],{},"Back-off restarting failed container"," и указывает на конкретный ",[25,41,42],{},"exit code",".",[16,45,47],{"id":46},"причины-возникновения","Причины возникновения",[49,50,51,59,72,78,96],"ol",{},[52,53,54,58],"li",{},[55,56,57],"strong",{},"Критическая ошибка приложения"," — паника в коде, некорректные аргументы запуска или отсутствие обязательных файлов конфигурации в рабочем каталоге.",[52,60,61,64,65,68,69,43],{},[55,62,63],{},"Нехватка оперативной памяти (OOMKilled)"," — контейнер потребляет больше RAM, чем разрешено в ",[25,66,67],{},"limits",". Ядро Linux принудительно завершает процесс с кодом ",[25,70,71],{},"137",[52,73,74,77],{},[55,75,76],{},"Агрессивные Liveness/Readiness пробы"," — приложение не успевает загрузиться, а kubelet уже считает его «мёртвым» и убивает контейнер, запуская цикл заново.",[52,79,80,83,84,87,88,91,92,95],{},[55,81,82],{},"Ошибки монтирования томов или секретов"," — неверные пути, отсутствующие PersistentVolume или проблемы с правами доступа (например, ",[25,85,86],{},"Permission denied"," для ",[25,89,90],{},"/var/run"," или ",[25,93,94],{},"/app/config",").",[52,97,98,101,102,105,106,109],{},[55,99,100],{},"Несовместимый или повреждённый образ"," — архитектура образа не совпадает с архитектурой ноды (например, ",[25,103,104],{},"arm64"," на ",[25,107,108],{},"amd64",") или базовый слой повреждён при сборке.",[16,111,113],{"id":112},"способы-решения","Способы решения",[115,116,118],"h3",{"id":117},"способ-1-анализ-логов-и-метаданных-пода","Способ 1: Анализ логов и метаданных пода",[21,120,121,122,125],{},"Начните с просмотра вывода приложения именно до момента его падения. Флаг ",[25,123,124],{},"--previous"," показывает логи предыдущей упавшей инстанции:",[127,128,133],"pre",{"className":129,"code":130,"language":131,"meta":132,"style":132},"language-bash shiki shiki-themes github-light github-dark","kubectl logs \u003Cимя_пода> -n \u003Cпространство_имён> --previous\n","bash","",[25,134,135],{"__ignoreMap":132},[136,137,140,144,148,152,155,159,162,166,168,171,174,176],"span",{"class":138,"line":139},"line",1,[136,141,143],{"class":142},"sScJk","kubectl",[136,145,147],{"class":146},"sZZnC"," logs",[136,149,151],{"class":150},"szBVR"," \u003C",[136,153,154],{"class":146},"имя_под",[136,156,158],{"class":157},"sVt8B","а",[136,160,161],{"class":150},">",[136,163,165],{"class":164},"sj4cs"," -n",[136,167,151],{"class":150},[136,169,170],{"class":146},"пространство_имё",[136,172,173],{"class":157},"н",[136,175,161],{"class":150},[136,177,178],{"class":164}," --previous\n",[21,180,181,182,185,186,189],{},"Если логи пусты или обрываются, запросите детальное описание пода. Ищите секцию ",[25,183,184],{},"State"," и ",[25,187,188],{},"Last State",":",[127,191,193],{"className":129,"code":192,"language":131,"meta":132,"style":132},"kubectl describe pod \u003Cимя_пода> -n \u003Cпространство_имён> | grep -A 10 -E \"State|Events|Reason\"\n",[25,194,195],{"__ignoreMap":132},[136,196,197,199,202,205,207,209,211,213,215,217,219,221,223,226,229,232,235,238],{"class":138,"line":139},[136,198,143],{"class":142},[136,200,201],{"class":146}," describe",[136,203,204],{"class":146}," pod",[136,206,151],{"class":150},[136,208,154],{"class":146},[136,210,158],{"class":157},[136,212,161],{"class":150},[136,214,165],{"class":164},[136,216,151],{"class":150},[136,218,170],{"class":146},[136,220,173],{"class":157},[136,222,161],{"class":150},[136,224,225],{"class":150}," |",[136,227,228],{"class":142}," grep",[136,230,231],{"class":164}," -A",[136,233,234],{"class":164}," 10",[136,236,237],{"class":164}," -E",[136,239,240],{"class":146}," \"State|Events|Reason\"\n",[242,243,244],"blockquote",{},[21,245,246,247,250,251,254,255,257,258,261],{},"💡 Совет: Обратите внимание на ",[25,248,249],{},"Exit Code",". Код ",[25,252,253],{},"1"," обычно указывает на программную ошибку, а ",[25,256,71],{}," — на ",[25,259,260],{},"SIGKILL"," от OOM-менеджера ядра.",[263,264],"in-article-ad",{},[115,266,268],{"id":267},"способ-2-корректировка-проб-и-лимитов-ресурсов","Способ 2: Корректировка проб и лимитов ресурсов",[21,270,271,272,275],{},"Если диагностика показала ",[25,273,274],{},"OOMKilled"," или ложные срабатывания проб, отредактируйте манифест Deployment. Увеличьте лимиты памяти и добавьте задержку перед первой проверкой:",[127,277,281],{"className":278,"code":279,"language":280,"meta":132,"style":132},"language-yaml shiki shiki-themes github-light github-dark","resources:\n  limits:\n    memory: \"512Mi\"\n    cpu: \"500m\"\n  requests:\n    memory: \"256Mi\"\n    cpu: \"250m\"\nlivenessProbe:\n  httpGet:\n    path: /healthz\n    port: 8080\n  initialDelaySeconds: 30  # Дайте приложению время на загрузку зависимостей\n  periodSeconds: 10\n  failureThreshold: 3\n","yaml",[25,282,283,292,300,312,323,331,341,351,359,367,378,389,404,415],{"__ignoreMap":132},[136,284,285,289],{"class":138,"line":139},[136,286,288],{"class":287},"s9eBZ","resources",[136,290,291],{"class":157},":\n",[136,293,295,298],{"class":138,"line":294},2,[136,296,297],{"class":287},"  limits",[136,299,291],{"class":157},[136,301,303,306,309],{"class":138,"line":302},3,[136,304,305],{"class":287},"    memory",[136,307,308],{"class":157},": ",[136,310,311],{"class":146},"\"512Mi\"\n",[136,313,315,318,320],{"class":138,"line":314},4,[136,316,317],{"class":287},"    cpu",[136,319,308],{"class":157},[136,321,322],{"class":146},"\"500m\"\n",[136,324,326,329],{"class":138,"line":325},5,[136,327,328],{"class":287},"  requests",[136,330,291],{"class":157},[136,332,334,336,338],{"class":138,"line":333},6,[136,335,305],{"class":287},[136,337,308],{"class":157},[136,339,340],{"class":146},"\"256Mi\"\n",[136,342,344,346,348],{"class":138,"line":343},7,[136,345,317],{"class":287},[136,347,308],{"class":157},[136,349,350],{"class":146},"\"250m\"\n",[136,352,354,357],{"class":138,"line":353},8,[136,355,356],{"class":287},"livenessProbe",[136,358,291],{"class":157},[136,360,362,365],{"class":138,"line":361},9,[136,363,364],{"class":287},"  httpGet",[136,366,291],{"class":157},[136,368,370,373,375],{"class":138,"line":369},10,[136,371,372],{"class":287},"    path",[136,374,308],{"class":157},[136,376,377],{"class":146},"/healthz\n",[136,379,381,384,386],{"class":138,"line":380},11,[136,382,383],{"class":287},"    port",[136,385,308],{"class":157},[136,387,388],{"class":164},"8080\n",[136,390,392,395,397,400],{"class":138,"line":391},12,[136,393,394],{"class":287},"  initialDelaySeconds",[136,396,308],{"class":157},[136,398,399],{"class":164},"30",[136,401,403],{"class":402},"sJ8bj","  # Дайте приложению время на загрузку зависимостей\n",[136,405,407,410,412],{"class":138,"line":406},13,[136,408,409],{"class":287},"  periodSeconds",[136,411,308],{"class":157},[136,413,414],{"class":164},"10\n",[136,416,418,421,423],{"class":138,"line":417},14,[136,419,420],{"class":287},"  failureThreshold",[136,422,308],{"class":157},[136,424,425],{"class":164},"3\n",[21,427,428],{},"После сохранения изменений примените манифест. Kubernetes автоматически выполнит rolling update и создаст новые поды с обновлённой конфигурацией.",[115,430,432],{"id":431},"способ-3-проверка-конфигурации-и-переменных-окружения","Способ 3: Проверка конфигурации и переменных окружения",[21,434,435],{},"Частая причина краша — отсутствие обязательных переменных окружения или битых ConfigMap. Убедитесь, что все ссылки валидны:",[127,437,439],{"className":129,"code":438,"language":131,"meta":132,"style":132},"kubectl get configmap,secret -n \u003Cпространство_имён>\n",[25,440,441],{"__ignoreMap":132},[136,442,443,445,448,451,453,455,457,459],{"class":138,"line":139},[136,444,143],{"class":142},[136,446,447],{"class":146}," get",[136,449,450],{"class":146}," configmap,secret",[136,452,165],{"class":164},[136,454,151],{"class":150},[136,456,170],{"class":146},[136,458,173],{"class":157},[136,460,461],{"class":150},">\n",[21,463,464,465,468,469,91,472,43],{},"Если приложение зависит от внешней БД или кэша, проверьте доступность этих сервисов изнутри кластера. Для временной отладки можно запустить облегчённый образ ",[25,466,467],{},"busybox"," в том же поде, чтобы протестировать сетевую связность и доступность портов через ",[25,470,471],{},"nc",[25,473,474],{},"curl",[242,476,477],{},[21,478,479,480,483],{},"⚠️ Важно: Не храните чувствительные данные прямо в манифестах. Используйте ",[25,481,482],{},"Secret"," и монтируйте их как файлы или переменные окружения с корректными правами доступа.",[16,485,487],{"id":486},"профилактика","Профилактика",[21,489,490],{},"Чтобы избежать повторения цикла перезагрузок, внедряйте следующие практики на этапе разработки и деплоя:",[492,493,494,503,513,519,524],"ul",{},[52,495,496,497,185,500,502],{},"Всегда указывайте ",[25,498,499],{},"resources.requests",[25,501,67],{}," на основе реальных метрик нагрузки.",[52,504,505,506,185,509,512],{},"Используйте ",[25,507,508],{},"initialDelaySeconds",[25,510,511],{},"timeoutSeconds"," в пробах, отталкиваясь от времени холодного старта приложения.",[52,514,515,516,43],{},"Тестируйте Docker-образы локально перед отправкой в реестр: ",[25,517,518],{},"docker run --rm -p 8080:8080 \u003Cваш_образ>",[52,520,521,522,43],{},"Настройте мониторинг событий кластера (например, через Prometheus Alertmanager) для мгновенного оповещения при появлении ",[25,523,27],{},[52,525,526,527,530],{},"Регулярно используйте ",[25,528,529],{},"kubectl rollout undo deployment/\u003Cимя>"," для быстрого отката к стабильной версии при неудачном обновлении.",[532,533,534],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":132,"searchDepth":294,"depth":294,"links":536},[537,538,539,544],{"id":18,"depth":294,"text":19},{"id":46,"depth":294,"text":47},{"id":112,"depth":294,"text":113,"children":540},[541,542,543],{"id":117,"depth":302,"text":118},{"id":267,"depth":302,"text":268},{"id":431,"depth":302,"text":432},{"id":486,"depth":294,"text":487},null,"CrashLoop","2026-04-08 00:09:03","Поды постоянно перезагружаются? Найдите точную причину статуса CrashLoopBackOff. Проверенная методика диагностики и исправления за 10 минут.","medium",false,"10-15 мин","md",[554,557,560],{"question":555,"answer":556},"Почему под переходит в статус CrashLoopBackOff?","kubelet зафиксировал несколько последовательных падений контейнера. Чтобы не перегружать ноду постоянными попытками запуска, система включает экспоненциальную задержку между рестартами, отображая этот статус.",{"question":558,"answer":559},"Как быстро найти причину сбоя без глубокого анализа логов?","Запустите `kubectl describe pod \u003Cимя_пода>` и изучите секции `Last State` и `Events`. Там часто указан конкретный `Exit Code` (например, 1 или 137) или причина ошибки монтирования/проб.",{"question":561,"answer":562},"Влияет ли CrashLoopBackOff на другие поды в том же Deployment?","Нет, каждый под перезапускается изолированно. Однако если причина кроется в общей конфигурации (неверный ConfigMap, недоступная БД), проблема проявится у всех реплик.",[564,567,570,573],{"name":565,"text":566},"Проверка логов контейнера","Выполните `kubectl logs \u003Cpod-name> --previous`, чтобы увидеть вывод приложения до его аварийного завершения.",{"name":568,"text":569},"Анализ метаданных и событий","Используйте `kubectl describe pod \u003Cpod-name>` для поиска exit-кодов, ошибок монтирования томов или проблем с readiness/liveness проб.",{"name":571,"text":572},"Коррекция конфигурации приложения","Исправьте переменные окружения, пути к файлам или увеличьте лимиты ресурсов (CPU/RAM) в манифесте Deployment.",{"name":574,"text":575},"Перезапуск и мониторинг","Примените обновлённый манифест через `kubectl apply -f deployment.yaml` и убедитесь, что статус сменился на Running.","PT15M",[578,579,580,581,582,583,584,585],"CrashLoopBackOff kubernetes исправление","поды перезагружаются k8s","статус CrashLoopBackOff причины","k8s pod restart loop","ошибка запуска контейнера kubernetes","диагностика краша пода","kubectl logs crashloopbackoff","исправить цикл перезагрузки k8s","ru_RU",{},true,"/errors/linux/k8s-crashloopbackoff","general",[592,593,594],"/guides/linux/k8s-pod-debugging","/errors/linux/docker-container-exit-code","/guides/linux/k8s-resource-limits","Ошибки Kubernetes",{"title":5,"description":548},"high","errors/linux/k8s-crashloopbackoff","Статус CrashLoopBackOff означает циклический перезапуск пода из-за критической ошибки на старте. Вы получите чёткий алгоритм диагностики и рабочие способы устранения неполадки.",[601,602,603,604,605,606,607],"Kubernetes","k8s","контейнеры","DevOps","Linux","troubleshooting","pod","error","3TBRg1RKbc577WDUL0gNCXXfRkWHsxpioyYdRubxIoQ",{"data":611,"body":612},{},{"type":613,"children":614},"root",[615],{"type":616,"tag":21,"props":617,"children":618},"element",{},[619],{"type":620,"value":556},"text",{"data":622,"body":623},{},{"type":613,"children":624},[625],{"type":616,"tag":21,"props":626,"children":627},{},[628,630,636,638,643,644,650,652,657],{"type":620,"value":629},"Запустите ",{"type":616,"tag":25,"props":631,"children":633},{"className":632},[],[634],{"type":620,"value":635},"kubectl describe pod \u003Cимя_пода>",{"type":620,"value":637}," и изучите секции ",{"type":616,"tag":25,"props":639,"children":641},{"className":640},[],[642],{"type":620,"value":188},{"type":620,"value":185},{"type":616,"tag":25,"props":645,"children":647},{"className":646},[],[648],{"type":620,"value":649},"Events",{"type":620,"value":651},". Там часто указан конкретный ",{"type":616,"tag":25,"props":653,"children":655},{"className":654},[],[656],{"type":620,"value":249},{"type":620,"value":658}," (например, 1 или 137) или причина ошибки монтирования/проб.",{"data":660,"body":661},{},{"type":613,"children":662},[663],{"type":616,"tag":21,"props":664,"children":665},{},[666],{"type":620,"value":562},{"data":668,"body":669},{},{"type":613,"children":670},[671],{"type":616,"tag":21,"props":672,"children":673},{},[674,676,682],{"type":620,"value":675},"Выполните ",{"type":616,"tag":25,"props":677,"children":679},{"className":678},[],[680],{"type":620,"value":681},"kubectl logs \u003Cpod-name> --previous",{"type":620,"value":683},", чтобы увидеть вывод приложения до его аварийного завершения.",{"data":685,"body":686},{},{"type":613,"children":687},[688],{"type":616,"tag":21,"props":689,"children":690},{},[691,692,698],{"type":620,"value":505},{"type":616,"tag":25,"props":693,"children":695},{"className":694},[],[696],{"type":620,"value":697},"kubectl describe pod \u003Cpod-name>",{"type":620,"value":699}," для поиска exit-кодов, ошибок монтирования томов или проблем с readiness/liveness проб.",{"data":701,"body":702},{},{"type":613,"children":703},[704],{"type":616,"tag":21,"props":705,"children":706},{},[707],{"type":620,"value":572},{"data":709,"body":710},{},{"type":613,"children":711},[712],{"type":616,"tag":21,"props":713,"children":714},{},[715,717,723],{"type":620,"value":716},"Примените обновлённый манифест через ",{"type":616,"tag":25,"props":718,"children":720},{"className":719},[],[721],{"type":620,"value":722},"kubectl apply -f deployment.yaml",{"type":620,"value":724}," и убедитесь, что статус сменился на Running.",[]]