[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/k8s-troubleshooting-pods":3,"mdc--dkftm1-key":1104,"mdc--3t38lp-key":1130,"mdc-d1wqr1-key":1147,"mdc--ea7rgw-key":1185,"mdc--7stqfo-key":1224,"mdc-txd5go-key":1241,"mdc--sk55pj-key":1279,"mdc--a83mni-key":1310,"mdc--9n73dv-key":1327,"mdc-5txd8x-key":1376,"related-/guides/linux/kubectl-basics,/guides/linux/kubernetes-logs-analysis,/errors/linux/k8s-image-pull-error":1393},{"id":4,"title":5,"appliesTo":6,"author":10,"body":11,"canonical":1035,"code":1035,"createdAt":1036,"description":1037,"difficulty":1038,"draft":1039,"estimatedTime":1040,"extension":1041,"faq":1042,"howToSteps":1055,"howToTotalTime":1074,"image":1035,"keywords":1075,"locale":1083,"meta":1084,"navigation":110,"path":1085,"platform":1086,"related":1087,"section":1091,"seo":1092,"severity":1035,"stem":1093,"summary":1094,"tags":1095,"twitterCreator":1035,"twitterSite":1035,"type":1102,"updatedAt":1036,"__hash__":1103},"content_ru/guides/linux/k8s-troubleshooting-pods.md","Диагностика и решение проблем с подами Kubernetes",[7,8,9],"Kubernetes 1.20+","kubectl 1.20+","Linux (Ubuntu 20.04+, CentOS 8+)","FixPedia Team",{"type":12,"value":13,"toc":1021},"minimark",[14,19,28,32,35,58,62,67,70,144,151,189,192,196,208,244,249,335,339,345,503,506,509,513,530,627,641,645,648,784,791,795,798,875,879,882,916,938,942,1017],[15,16,18],"h2",{"id":17},"введение-зачем-это-нужно","Введение / Зачем это нужно",[20,21,22,23,27],"p",{},"Поды (Pods) — это базовые и самые часто используемые объекты в Kubernetes. Однако они могут перестать работать по множеству причин: от нехватки ресурсов до ошибок в конфигурации или самом приложении. Системная диагностика с помощью ",[24,25,26],"code",{},"kubectl"," позволяет быстро локализовать проблему, а не гадать или пересоздавать ресурсы вслепую. После выполнения этого гайда вы сможете самостоятельно выявлять и исправлять большинство типичных проблем с подами.",[15,29,31],{"id":30},"требования-подготовка","Требования / Подготовка",[20,33,34],{},"Перед началом убедитесь, что у вас есть:",[36,37,38,46,52,55],"ol",{},[39,40,41,42,45],"li",{},"Доступ к кластеру Kubernetes с правами на просмотр подов (обычно роль ",[24,43,44],{},"view"," или выше).",[39,47,48,49,51],{},"Установленный и настроенный клиент ",[24,50,26],{}," (версия, совместимая с вашим кластером).",[39,53,54],{},"Базовое понимание структуры пода и его компонентов (контейнеры, Init Containers, тома).",[39,56,57],{},"Название проблемного пода и его namespace (если не default).",[15,59,61],{"id":60},"пошаговая-инструкция","Пошаговая инструкция",[63,64,66],"h3",{"id":65},"шаг-1-проверьте-общий-статус-пода-и-кластера","Шаг 1: Проверьте общий статус пода и кластера",[20,68,69],{},"Первым делом убедитесь, что pod существует и посмотрите на его текущее состояние.",[71,72,77],"pre",{"className":73,"code":74,"language":75,"meta":76,"style":76},"language-bash shiki shiki-themes github-light github-dark","# Показать все поды во всех namespace (или укажите -n \u003Cnamespace>)\nkubectl get pods --all-namespaces\n\n# Если знаете namespace, посмотрите только в нём\nkubectl get pods -n \u003Cyour-namespace>\n","bash","",[24,78,79,88,105,112,118],{"__ignoreMap":76},[80,81,84],"span",{"class":82,"line":83},"line",1,[80,85,87],{"class":86},"sJ8bj","# Показать все поды во всех namespace (или укажите -n \u003Cnamespace>)\n",[80,89,91,94,98,101],{"class":82,"line":90},2,[80,92,26],{"class":93},"sScJk",[80,95,97],{"class":96},"sZZnC"," get",[80,99,100],{"class":96}," pods",[80,102,104],{"class":103},"sj4cs"," --all-namespaces\n",[80,106,108],{"class":82,"line":107},3,[80,109,111],{"emptyLinePlaceholder":110},true,"\n",[80,113,115],{"class":82,"line":114},4,[80,116,117],{"class":86},"# Если знаете namespace, посмотрите только в нём\n",[80,119,121,123,125,127,130,134,137,141],{"class":82,"line":120},5,[80,122,26],{"class":93},[80,124,97],{"class":96},[80,126,100],{"class":96},[80,128,129],{"class":103}," -n",[80,131,133],{"class":132},"szBVR"," \u003C",[80,135,136],{"class":96},"your-namespac",[80,138,140],{"class":139},"sVt8B","e",[80,142,143],{"class":132},">\n",[20,145,146,147,150],{},"Обратите внимание на столбец ",[24,148,149],{},"STATUS",". Критические состояния:",[152,153,154,160,170,179],"ul",{},[39,155,156,159],{},[24,157,158],{},"Pending"," — pod не был запланирован на ноду.",[39,161,162,165,166,169],{},[24,163,164],{},"CrashLoopBackOff"," / ",[24,167,168],{},"Error"," — контейнер(ы) завершаются с ошибкой.",[39,171,172,165,175,178],{},[24,173,174],{},"ImagePullBackOff",[24,176,177],{},"ErrImagePull"," — не удалось загрузить образ.",[39,180,181,184,185,188],{},[24,182,183],{},"Terminating"," — pod не может быть завершен (часто из-за ",[24,186,187],{},"finalizers",").",[20,190,191],{},"Если pod отсутствует в списке, возможно, он был удалён или вы смотрите в не том namespace.",[63,193,195],{"id":194},"шаг-2-изучите-подробные-события-и-конфигурацию-пода","Шаг 2: Изучите подробные события и конфигурацию пода",[20,197,198,199,202,203,207],{},"Команда ",[24,200,201],{},"describe"," — ваш основной инструмент для диагностики. Она выводит всю метаинформацию о поде и, что самое важное, ",[204,205,206],"strong",{},"события (Events)",", которые часто содержать ключ к разгадке.",[71,209,211],{"className":73,"code":210,"language":75,"meta":76,"style":76},"kubectl describe pod \u003Cpod-name> -n \u003Cnamespace>\n",[24,212,213],{"__ignoreMap":76},[80,214,215,217,220,223,225,228,230,233,235,237,240,242],{"class":82,"line":83},[80,216,26],{"class":93},[80,218,219],{"class":96}," describe",[80,221,222],{"class":96}," pod",[80,224,133],{"class":132},[80,226,227],{"class":96},"pod-nam",[80,229,140],{"class":139},[80,231,232],{"class":132},">",[80,234,129],{"class":103},[80,236,133],{"class":132},[80,238,239],{"class":96},"namespac",[80,241,140],{"class":139},[80,243,143],{"class":132},[20,245,246],{},[204,247,248],{},"На что смотреть в выводе:",[152,250,251,276,303,326],{},[39,252,253,256,257,260,261,264,265,268,269,268,272,275],{},[204,254,255],{},"Events:"," Последние события (обычно в конце вывода). Ищите сообщения с префиксами ",[24,258,259],{},"Warning"," или ",[24,262,263],{},"Failed",". Например: ",[24,266,267],{},"Failed to pull image",", ",[24,270,271],{},"Insufficient memory",[24,273,274],{},"NodeAffinity",".",[39,277,278,281,282,268,285,288,289,292,293,295,296,299,300,188],{},[204,279,280],{},"Containers:"," Для каждого контейнера проверьте ",[24,283,284],{},"Ready",[24,286,287],{},"State"," (Waiting/Running/Terminated) и ",[24,290,291],{},"Last State",". В ",[24,294,287],{}," будет указана причина (",[24,297,298],{},"Reason",") и код выхода (",[24,301,302],{},"Exit Code",[39,304,305,308,309,268,312,268,315,318,319,321,322,325],{},[204,306,307],{},"Conditions:"," Условия, такие как ",[24,310,311],{},"PodScheduled",[24,313,314],{},"Initialized",[24,316,317],{},"ContainersReady",". Если ",[24,320,311],{}," имеет статус ",[24,323,324],{},"False",", проблема в планировщике.",[39,327,328,331,332,188],{},[204,329,330],{},"Volumes:"," Убедитесь, что тома успешно подключены (",[24,333,334],{},"Mounted",[63,336,338],{"id":337},"шаг-3-проанализируйте-логи-контейнеров","Шаг 3: Проанализируйте логи контейнеров",[20,340,341,342,275],{},"Логи приложения — прямой источник информации о внутренних ошибках. Используйте команду ",[24,343,344],{},"logs",[71,346,348],{"className":73,"code":347,"language":75,"meta":76,"style":76},"# Логи стандартного (первого) контейнера в поде\nkubectl logs \u003Cpod-name> -n \u003Cnamespace>\n\n# Логи конкретного контейнера в мультиконтейнерном поде\nkubectl logs \u003Cpod-name> -c \u003Ccontainer-name> -n \u003Cnamespace>\n\n# Если pod постоянно перезапускается, посмотрите логи предыдущего экземпляра\nkubectl logs \u003Cpod-name> --previous -n \u003Cnamespace>\n\n# Логи за последние 10 минут (если поддерживается)\nkubectl logs \u003Cpod-name> --since=10m -n \u003Cnamespace>\n",[24,349,350,355,380,384,389,425,430,436,464,469,475],{"__ignoreMap":76},[80,351,352],{"class":82,"line":83},[80,353,354],{"class":86},"# Логи стандартного (первого) контейнера в поде\n",[80,356,357,359,362,364,366,368,370,372,374,376,378],{"class":82,"line":90},[80,358,26],{"class":93},[80,360,361],{"class":96}," logs",[80,363,133],{"class":132},[80,365,227],{"class":96},[80,367,140],{"class":139},[80,369,232],{"class":132},[80,371,129],{"class":103},[80,373,133],{"class":132},[80,375,239],{"class":96},[80,377,140],{"class":139},[80,379,143],{"class":132},[80,381,382],{"class":82,"line":107},[80,383,111],{"emptyLinePlaceholder":110},[80,385,386],{"class":82,"line":114},[80,387,388],{"class":86},"# Логи конкретного контейнера в мультиконтейнерном поде\n",[80,390,391,393,395,397,399,401,403,406,408,411,413,415,417,419,421,423],{"class":82,"line":120},[80,392,26],{"class":93},[80,394,361],{"class":96},[80,396,133],{"class":132},[80,398,227],{"class":96},[80,400,140],{"class":139},[80,402,232],{"class":132},[80,404,405],{"class":103}," -c",[80,407,133],{"class":132},[80,409,410],{"class":96},"container-nam",[80,412,140],{"class":139},[80,414,232],{"class":132},[80,416,129],{"class":103},[80,418,133],{"class":132},[80,420,239],{"class":96},[80,422,140],{"class":139},[80,424,143],{"class":132},[80,426,428],{"class":82,"line":427},6,[80,429,111],{"emptyLinePlaceholder":110},[80,431,433],{"class":82,"line":432},7,[80,434,435],{"class":86},"# Если pod постоянно перезапускается, посмотрите логи предыдущего экземпляра\n",[80,437,439,441,443,445,447,449,451,454,456,458,460,462],{"class":82,"line":438},8,[80,440,26],{"class":93},[80,442,361],{"class":96},[80,444,133],{"class":132},[80,446,227],{"class":96},[80,448,140],{"class":139},[80,450,232],{"class":132},[80,452,453],{"class":103}," --previous",[80,455,129],{"class":103},[80,457,133],{"class":132},[80,459,239],{"class":96},[80,461,140],{"class":139},[80,463,143],{"class":132},[80,465,467],{"class":82,"line":466},9,[80,468,111],{"emptyLinePlaceholder":110},[80,470,472],{"class":82,"line":471},10,[80,473,474],{"class":86},"# Логи за последние 10 минут (если поддерживается)\n",[80,476,478,480,482,484,486,488,490,493,495,497,499,501],{"class":82,"line":477},11,[80,479,26],{"class":93},[80,481,361],{"class":96},[80,483,133],{"class":132},[80,485,227],{"class":96},[80,487,140],{"class":139},[80,489,232],{"class":132},[80,491,492],{"class":103}," --since=10m",[80,494,129],{"class":103},[80,496,133],{"class":132},[80,498,239],{"class":96},[80,500,140],{"class":139},[80,502,143],{"class":132},[20,504,505],{},"Если вывод пустой, возможно, контейнер не запускается до стадии записи в stdout/stderr (например, падает сразу после старта). В таком случае полагайтесь на шаг 2 (события и состояние).",[507,508],"in-article-ad",{},[63,510,512],{"id":511},"шаг-4-проверьте-использование-ресурсов-cpumemory","Шаг 4: Проверьте использование ресурсов (CPU/Memory)",[20,514,515,516,260,518,521,522,525,526,529],{},"Частая причина ",[24,517,158],{},[24,519,520],{},"OOMKilled"," — нехватка вычислительных ресурсов. Сначала проверьте запросы (",[24,523,524],{},"requests",") и лимиты (",[24,527,528],{},"limits",") в манифесте пода. Затем сравните с фактическим потреблением и доступными ресурсами на нодах.",[71,531,533],{"className":73,"code":532,"language":75,"meta":76,"style":76},"# Посмотреть запросы/лимиты ресурсов для пода (если они заданы)\nkubectl describe pod \u003Cpod-name> -n \u003Cnamespace> | grep -A5 -B5 \"Resources\"\n\n# Проверить текущее потребление ресурсов всеми подами в namespace\nkubectl top pods -n \u003Cnamespace>\n\n# Проверить доступные/используемые ресурсы на нодах\nkubectl top nodes\n",[24,534,535,540,581,585,590,609,613,618],{"__ignoreMap":76},[80,536,537],{"class":82,"line":83},[80,538,539],{"class":86},"# Посмотреть запросы/лимиты ресурсов для пода (если они заданы)\n",[80,541,542,544,546,548,550,552,554,556,558,560,562,564,566,569,572,575,578],{"class":82,"line":90},[80,543,26],{"class":93},[80,545,219],{"class":96},[80,547,222],{"class":96},[80,549,133],{"class":132},[80,551,227],{"class":96},[80,553,140],{"class":139},[80,555,232],{"class":132},[80,557,129],{"class":103},[80,559,133],{"class":132},[80,561,239],{"class":96},[80,563,140],{"class":139},[80,565,232],{"class":132},[80,567,568],{"class":132}," |",[80,570,571],{"class":93}," grep",[80,573,574],{"class":103}," -A5",[80,576,577],{"class":103}," -B5",[80,579,580],{"class":96}," \"Resources\"\n",[80,582,583],{"class":82,"line":107},[80,584,111],{"emptyLinePlaceholder":110},[80,586,587],{"class":82,"line":114},[80,588,589],{"class":86},"# Проверить текущее потребление ресурсов всеми подами в namespace\n",[80,591,592,594,597,599,601,603,605,607],{"class":82,"line":120},[80,593,26],{"class":93},[80,595,596],{"class":96}," top",[80,598,100],{"class":96},[80,600,129],{"class":103},[80,602,133],{"class":132},[80,604,239],{"class":96},[80,606,140],{"class":139},[80,608,143],{"class":132},[80,610,611],{"class":82,"line":427},[80,612,111],{"emptyLinePlaceholder":110},[80,614,615],{"class":82,"line":432},[80,616,617],{"class":86},"# Проверить доступные/используемые ресурсы на нодах\n",[80,619,620,622,624],{"class":82,"line":438},[80,621,26],{"class":93},[80,623,596],{"class":96},[80,625,626],{"class":96}," nodes\n",[20,628,629,630,632,633,636,637,640],{},"Если pod в ",[24,631,158],{}," и событие говорит ",[24,634,635],{},"0/1 nodes are available: 1 Insufficient memory",", значит, ни одна нода не имеет достаточно свободной памяти для удовлетворения ",[24,638,639],{},"requests.memory"," пода.",[63,642,644],{"id":643},"шаг-5-валидируйте-манифест-и-образ-контейнера","Шаг 5: Валидируйте манифест и образ контейнера",[20,646,647],{},"Иногда проблема лежит в самом определении пода (YAML/JSON) или в недоступности образа.",[71,649,651],{"className":73,"code":650,"language":75,"meta":76,"style":76},"# Проверьте синтаксис манифеста перед применением (если редактировали)\nkubectl apply --dry-run=client -f your-pod-manifest.yaml\n\n# Проверьте, доступен ли образ и есть ли права на его скачивание\n# (если используется приватный реестр)\nkubectl get secret \u003Csecret-name> -n \u003Cnamespace> -o yaml | grep -E \"username|password\"\n\n# Попробуйте вручную запустить pod с другим образом (например, alpine) в том же namespace,\n# чтобы проверить общую работоспособность сети и реестра\nkubectl run test-pod --image=alpine --restart=Never -n \u003Cnamespace> --command -- sleep 3600\n",[24,652,653,658,674,678,683,688,732,736,741,746],{"__ignoreMap":76},[80,654,655],{"class":82,"line":83},[80,656,657],{"class":86},"# Проверьте синтаксис манифеста перед применением (если редактировали)\n",[80,659,660,662,665,668,671],{"class":82,"line":90},[80,661,26],{"class":93},[80,663,664],{"class":96}," apply",[80,666,667],{"class":103}," --dry-run=client",[80,669,670],{"class":103}," -f",[80,672,673],{"class":96}," your-pod-manifest.yaml\n",[80,675,676],{"class":82,"line":107},[80,677,111],{"emptyLinePlaceholder":110},[80,679,680],{"class":82,"line":114},[80,681,682],{"class":86},"# Проверьте, доступен ли образ и есть ли права на его скачивание\n",[80,684,685],{"class":82,"line":120},[80,686,687],{"class":86},"# (если используется приватный реестр)\n",[80,689,690,692,694,697,699,702,704,706,708,710,712,714,716,719,722,724,726,729],{"class":82,"line":427},[80,691,26],{"class":93},[80,693,97],{"class":96},[80,695,696],{"class":96}," secret",[80,698,133],{"class":132},[80,700,701],{"class":96},"secret-nam",[80,703,140],{"class":139},[80,705,232],{"class":132},[80,707,129],{"class":103},[80,709,133],{"class":132},[80,711,239],{"class":96},[80,713,140],{"class":139},[80,715,232],{"class":132},[80,717,718],{"class":103}," -o",[80,720,721],{"class":96}," yaml",[80,723,568],{"class":132},[80,725,571],{"class":93},[80,727,728],{"class":103}," -E",[80,730,731],{"class":96}," \"username|password\"\n",[80,733,734],{"class":82,"line":432},[80,735,111],{"emptyLinePlaceholder":110},[80,737,738],{"class":82,"line":438},[80,739,740],{"class":86},"# Попробуйте вручную запустить pod с другим образом (например, alpine) в том же namespace,\n",[80,742,743],{"class":82,"line":466},[80,744,745],{"class":86},"# чтобы проверить общую работоспособность сети и реестра\n",[80,747,748,750,753,756,759,762,764,766,768,770,772,775,778,781],{"class":82,"line":471},[80,749,26],{"class":93},[80,751,752],{"class":96}," run",[80,754,755],{"class":96}," test-pod",[80,757,758],{"class":103}," --image=alpine",[80,760,761],{"class":103}," --restart=Never",[80,763,129],{"class":103},[80,765,133],{"class":132},[80,767,239],{"class":96},[80,769,140],{"class":139},[80,771,232],{"class":132},[80,773,774],{"class":103}," --command",[80,776,777],{"class":103}," --",[80,779,780],{"class":96}," sleep",[80,782,783],{"class":103}," 3600\n",[20,785,786,787,790],{},"Если тестовый pod с ",[24,788,789],{},"alpine"," запускается, а ваш — нет, проблема, скорее всего, в вашем образе или его параметрах (тег, реестр, секрет).",[63,792,794],{"id":793},"шаг-6-проверьте-состояние-нод-и-сетевое-подключение","Шаг 6: Проверьте состояние нод и сетевое подключение",[20,796,797],{},"Проблемы могут быть не в поде, а в инфраструктуре.",[71,799,801],{"className":73,"code":800,"language":75,"meta":76,"style":76},"# Проверьте статус нод (Ready, DiskPressure, MemoryPressure и т.д.)\nkubectl get nodes\nkubectl describe node \u003Cnode-name>\n\n# Если pod не может быть запланирован из-за толерантностей или селекторов,\n# проверьте, соответствуют ли метки ноды (labels) селектору пода (nodeSelector/affinity).\n\n# Проверьте, работают ли сетевые решения (CNI) на ноде.\n# Обычно для этого нужно зайти на ноду (ssh) и проверить статус подов kube-system.\nkubectl get pods -n kube-system\n",[24,802,803,808,816,834,838,843,848,852,857,862],{"__ignoreMap":76},[80,804,805],{"class":82,"line":83},[80,806,807],{"class":86},"# Проверьте статус нод (Ready, DiskPressure, MemoryPressure и т.д.)\n",[80,809,810,812,814],{"class":82,"line":90},[80,811,26],{"class":93},[80,813,97],{"class":96},[80,815,626],{"class":96},[80,817,818,820,822,825,827,830,832],{"class":82,"line":107},[80,819,26],{"class":93},[80,821,219],{"class":96},[80,823,824],{"class":96}," node",[80,826,133],{"class":132},[80,828,829],{"class":96},"node-nam",[80,831,140],{"class":139},[80,833,143],{"class":132},[80,835,836],{"class":82,"line":114},[80,837,111],{"emptyLinePlaceholder":110},[80,839,840],{"class":82,"line":120},[80,841,842],{"class":86},"# Если pod не может быть запланирован из-за толерантностей или селекторов,\n",[80,844,845],{"class":82,"line":427},[80,846,847],{"class":86},"# проверьте, соответствуют ли метки ноды (labels) селектору пода (nodeSelector/affinity).\n",[80,849,850],{"class":82,"line":432},[80,851,111],{"emptyLinePlaceholder":110},[80,853,854],{"class":82,"line":438},[80,855,856],{"class":86},"# Проверьте, работают ли сетевые решения (CNI) на ноде.\n",[80,858,859],{"class":82,"line":466},[80,860,861],{"class":86},"# Обычно для этого нужно зайти на ноду (ssh) и проверить статус подов kube-system.\n",[80,863,864,866,868,870,872],{"class":82,"line":471},[80,865,26],{"class":93},[80,867,97],{"class":96},[80,869,100],{"class":96},[80,871,129],{"class":103},[80,873,874],{"class":96}," kube-system\n",[15,876,878],{"id":877},"проверка-результата","Проверка результата",[20,880,881],{},"После выполнения диагностических шагов и внесения исправлений (например, увеличения лимитов, исправления образа, изменения селектора) обновите состояние пода:",[71,883,885],{"className":73,"code":884,"language":75,"meta":76,"style":76},"kubectl get pod \u003Cpod-name> -n \u003Cnamespace> --watch\n",[24,886,887],{"__ignoreMap":76},[80,888,889,891,893,895,897,899,901,903,905,907,909,911,913],{"class":82,"line":83},[80,890,26],{"class":93},[80,892,97],{"class":96},[80,894,222],{"class":96},[80,896,133],{"class":132},[80,898,227],{"class":96},[80,900,140],{"class":139},[80,902,232],{"class":132},[80,904,129],{"class":103},[80,906,133],{"class":132},[80,908,239],{"class":96},[80,910,140],{"class":139},[80,912,232],{"class":132},[80,914,915],{"class":103}," --watch\n",[20,917,918,921,922,925,926,929,930,933,934,937],{},[204,919,920],{},"Успешный результат:"," Под переходит в состояние ",[24,923,924],{},"Running",", и в столбце ",[24,927,928],{},"READY"," отображается ",[24,931,932],{},"1/1"," (или соответствующее количество контейнеров). Логи (",[24,935,936],{},"kubectl logs",") показывают нормальную работу приложения без фатальных ошибок.",[15,939,941],{"id":940},"возможные-проблемы","Возможные проблемы",[152,943,944,960,972,982,1000],{},[39,945,946,951,952,955,956,959],{},[204,947,948,950],{},[24,949,26],{}," не может подключиться к кластеру:"," Проверьте конфигурацию (",[24,953,954],{},"kubectl config view","), переменную ",[24,957,958],{},"KUBECONFIG"," и сетевое подключение к мастер-ноде.",[39,961,962,968,969,275],{},[204,963,964,967],{},[24,965,966],{},"kubectl describe pod"," не показывает события:"," События автоматически удаляются через некоторое время. Попробуйте посмотреть события для всего namespace: ",[24,970,971],{},"kubectl get events -n \u003Cnamespace> --sort-by='.lastTimestamp'",[39,973,974,981],{},[204,975,976,977,980],{},"Pod в ",[24,978,979],{},"Completed",":"," Это нормальное состояние для заданий (Jobs) или подов с контейнером, который выполнил свою задачу и завершился (например, миграция базы данных). Для долгоживущих сервисов убедитесь, что в контейнере запущен долгий процесс (например, веб-сервер).",[39,983,984,989,990,992,993,996,997,275],{},[204,985,976,986,988],{},[24,987,183],{}," вечно:"," Чаще всего причина — ",[24,991,187],{}," в спецификации пода или наличие ",[24,994,995],{},"preStop"," хука, который не завершается. Принудительное удаление: ",[24,998,999],{},"kubectl delete pod \u003Cpod-name> --grace-period=0 --force",[39,1001,1002,1009,1010,1013,1014,188],{},[204,1003,1004,1005,1008],{},"Нет доступа к логам (",[24,1006,1007],{},"Error from server: ...","):"," Проверьте, есть ли у вашего пользователя (ServiceAccount) права на получение логов (",[24,1011,1012],{},"get"," на ресурсе ",[24,1015,1016],{},"pods/log",[1018,1019,1020],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .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);}",{"title":76,"searchDepth":90,"depth":90,"links":1022},[1023,1024,1025,1033,1034],{"id":17,"depth":90,"text":18},{"id":30,"depth":90,"text":31},{"id":60,"depth":90,"text":61,"children":1026},[1027,1028,1029,1030,1031,1032],{"id":65,"depth":107,"text":66},{"id":194,"depth":107,"text":195},{"id":337,"depth":107,"text":338},{"id":511,"depth":107,"text":512},{"id":643,"depth":107,"text":644},{"id":793,"depth":107,"text":794},{"id":877,"depth":90,"text":878},{"id":940,"depth":90,"text":941},null,"2026-02-17 11:29:02","Пошаговое руководство по диагностике и исправлению распространённых ошибок подов в Kubernetes. Узнайте, как использовать kubectl для быстрого восстановления работы кластера.","medium",false,"15-20 мин","md",[1043,1046,1049,1052],{"question":1044,"answer":1045},"Почему мой pod постоянно находится в состоянии Pending?","Состояние `Pending` обычно означает, что планировщик не может найти подходящие ноды с достаточными ресурсами (CPU, память) или есть конфликты с толерантностями/селекторами. Проверьте события пода (`kubectl describe pod`) и доступность ресурсов в кластере.",{"question":1047,"answer":1048},"Что делать, если pod завершается с кодом 137 (OOMKilled)?","Код 137 означает, что контейнер был завершен из-за нехватки памяти (OOM). Нужно увеличить лимит памяти (`resources.limits.memory`) в манифесте пода или оптимизировать приложение, чтобы оно потребляло меньше RAM.",{"question":1050,"answer":1051},"Как узнать, почему pod перезапускается (CrashLoopBackOff)?","Используйте `kubectl logs pod-name --previous`, чтобы увидеть логи предыдущего запуска контейнера. Также проанализируйте вывод `kubectl describe pod`, особенно разделы `Events` и `Last State`.",{"question":1053,"answer":1054},"Можно ли диагностировать pod, если он не имеет контейнеров (например, Init Container завершился с ошибкой)?","Да. Для инициализирующих контейнеров используйте `kubectl logs pod-name -c \u003Ccontainer-name>`. Состояние пода будет `Init:Error` или `PodInitializing`, а события в `kubectl describe pod` укажут на причину.",[1056,1059,1062,1065,1068,1071],{"name":1057,"text":1058},"Проверьте общий статус пода и кластера","Убедитесь, что кластер работает и pod существует. Используйте `kubectl get pods` для просмотра состояния всех подов в namespace.",{"name":1060,"text":1061},"Изучите подробные события и конфигурацию пода","Выполните `kubectl describe pod \u003Cpod-name>`. Внимательно изучите разделы `Events`, `Containers`, `Conditions` — там часто указывается прямая причина проблемы.",{"name":1063,"text":1064},"Проанализируйте логи контейнеров","Используйте `kubectl logs \u003Cpod-name>` для логов текущего контейнера. Если pod перезапускается, добавьте флаг `--previous` для просмотра логов предыдущего экземпляра. Для мультиконтейнерных подов укажите `-c \u003Ccontainer-name>`.",{"name":1066,"text":1067},"Проверьте использование ресурсов (CPU/Memory)","С помощью `kubectl top pod \u003Cpod-name>` оцените потребление ресурсов. Если лимиты превышены, pod может быть завершен (OOMKilled) или быть нераспределённым (Pending).",{"name":1069,"text":1070},"Валидируйте манифест и образ контейнера","Убедитесь, что образ (`image`) существует и доступен. Проверьте секреты (`imagePullSecrets`), настройки сети (`networkPolicy`) и тома (`volumes`). Используйте `kubectl apply --dry-run=client -f manifest.yaml` для валидации синтаксиса.",{"name":1072,"text":1073},"Проверьте состояние нод и сетевое подключение","Убедитесь, что нода, на которой должен запуститься pod, готова (`kubectl get nodes`). Проверьте, нет ли проблем с DNS или сетевыми политиками, блокирующими трафик.","PT20M",[1076,1077,1078,1079,1080,1081,1082],"k8s pod не запускается","kubectl describe pod ошибка","Kubernetes pod CrashLoopBackOff решение","как посмотреть логи пода k8s","pod处于Pending状态 причина","k8s диагностика подов","Kubernetes pod OOMKilled","ru_RU",{},"/guides/linux/k8s-troubleshooting-pods","linux",[1088,1089,1090],"/guides/linux/kubectl-basics","/guides/linux/kubernetes-logs-analysis","/errors/linux/k8s-image-pull-error","Гайды Kubernetes",{"title":5,"description":1037},"guides/linux/k8s-troubleshooting-pods","Это руководство поможет вам системно выявлять и устранять типичные проблемы с подами (pods) в Kubernetes, используя встроенные инструменты командной строки и анализ логов.",[1096,1097,1098,1099,1100,1086,1101],"kubernetes","pods","диагностика","k8s","troubleshooting","cluster","guide","YxSJFxzceFvGNvTmc6gMO2kL-E-7nyH0SHGT1M4628g",{"data":1105,"body":1106},{},{"type":1107,"children":1108},"root",[1109],{"type":1110,"tag":20,"props":1111,"children":1112},"element",{},[1113,1116,1121,1123,1128],{"type":1114,"value":1115},"text","Состояние ",{"type":1110,"tag":24,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":1114,"value":158},{"type":1114,"value":1122}," обычно означает, что планировщик не может найти подходящие ноды с достаточными ресурсами (CPU, память) или есть конфликты с толерантностями/селекторами. Проверьте события пода (",{"type":1110,"tag":24,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":1114,"value":966},{"type":1114,"value":1129},") и доступность ресурсов в кластере.",{"data":1131,"body":1132},{},{"type":1107,"children":1133},[1134],{"type":1110,"tag":20,"props":1135,"children":1136},{},[1137,1139,1145],{"type":1114,"value":1138},"Код 137 означает, что контейнер был завершен из-за нехватки памяти (OOM). Нужно увеличить лимит памяти (",{"type":1110,"tag":24,"props":1140,"children":1142},{"className":1141},[],[1143],{"type":1114,"value":1144},"resources.limits.memory",{"type":1114,"value":1146},") в манифесте пода или оптимизировать приложение, чтобы оно потребляло меньше RAM.",{"data":1148,"body":1149},{},{"type":1107,"children":1150},[1151],{"type":1110,"tag":20,"props":1152,"children":1153},{},[1154,1156,1162,1164,1169,1171,1177,1179,1184],{"type":1114,"value":1155},"Используйте ",{"type":1110,"tag":24,"props":1157,"children":1159},{"className":1158},[],[1160],{"type":1114,"value":1161},"kubectl logs pod-name --previous",{"type":1114,"value":1163},", чтобы увидеть логи предыдущего запуска контейнера. Также проанализируйте вывод ",{"type":1110,"tag":24,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":1114,"value":966},{"type":1114,"value":1170},", особенно разделы ",{"type":1110,"tag":24,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":1114,"value":1176},"Events",{"type":1114,"value":1178}," и ",{"type":1110,"tag":24,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":1114,"value":291},{"type":1114,"value":275},{"data":1186,"body":1187},{},{"type":1107,"children":1188},[1189],{"type":1110,"tag":20,"props":1190,"children":1191},{},[1192,1194,1200,1202,1208,1209,1215,1217,1222],{"type":1114,"value":1193},"Да. Для инициализирующих контейнеров используйте ",{"type":1110,"tag":24,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":1114,"value":1199},"kubectl logs pod-name -c \u003Ccontainer-name>",{"type":1114,"value":1201},". Состояние пода будет ",{"type":1110,"tag":24,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":1114,"value":1207},"Init:Error",{"type":1114,"value":260},{"type":1110,"tag":24,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":1114,"value":1214},"PodInitializing",{"type":1114,"value":1216},", а события в ",{"type":1110,"tag":24,"props":1218,"children":1220},{"className":1219},[],[1221],{"type":1114,"value":966},{"type":1114,"value":1223}," укажут на причину.",{"data":1225,"body":1226},{},{"type":1107,"children":1227},[1228],{"type":1110,"tag":20,"props":1229,"children":1230},{},[1231,1233,1239],{"type":1114,"value":1232},"Убедитесь, что кластер работает и pod существует. Используйте ",{"type":1110,"tag":24,"props":1234,"children":1236},{"className":1235},[],[1237],{"type":1114,"value":1238},"kubectl get pods",{"type":1114,"value":1240}," для просмотра состояния всех подов в namespace.",{"data":1242,"body":1243},{},{"type":1107,"children":1244},[1245],{"type":1110,"tag":20,"props":1246,"children":1247},{},[1248,1250,1256,1258,1263,1264,1270,1271,1277],{"type":1114,"value":1249},"Выполните ",{"type":1110,"tag":24,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":1114,"value":1255},"kubectl describe pod \u003Cpod-name>",{"type":1114,"value":1257},". Внимательно изучите разделы ",{"type":1110,"tag":24,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":1114,"value":1176},{"type":1114,"value":268},{"type":1110,"tag":24,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":1114,"value":1269},"Containers",{"type":1114,"value":268},{"type":1110,"tag":24,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":1114,"value":1276},"Conditions",{"type":1114,"value":1278}," — там часто указывается прямая причина проблемы.",{"data":1280,"body":1281},{},{"type":1107,"children":1282},[1283],{"type":1110,"tag":20,"props":1284,"children":1285},{},[1286,1287,1293,1295,1301,1303,1309],{"type":1114,"value":1155},{"type":1110,"tag":24,"props":1288,"children":1290},{"className":1289},[],[1291],{"type":1114,"value":1292},"kubectl logs \u003Cpod-name>",{"type":1114,"value":1294}," для логов текущего контейнера. Если pod перезапускается, добавьте флаг ",{"type":1110,"tag":24,"props":1296,"children":1298},{"className":1297},[],[1299],{"type":1114,"value":1300},"--previous",{"type":1114,"value":1302}," для просмотра логов предыдущего экземпляра. Для мультиконтейнерных подов укажите ",{"type":1110,"tag":24,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":1114,"value":1308},"-c \u003Ccontainer-name>",{"type":1114,"value":275},{"data":1311,"body":1312},{},{"type":1107,"children":1313},[1314],{"type":1110,"tag":20,"props":1315,"children":1316},{},[1317,1319,1325],{"type":1114,"value":1318},"С помощью ",{"type":1110,"tag":24,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":1114,"value":1324},"kubectl top pod \u003Cpod-name>",{"type":1114,"value":1326}," оцените потребление ресурсов. Если лимиты превышены, pod может быть завершен (OOMKilled) или быть нераспределённым (Pending).",{"data":1328,"body":1329},{},{"type":1107,"children":1330},[1331],{"type":1110,"tag":20,"props":1332,"children":1333},{},[1334,1336,1342,1344,1350,1352,1358,1360,1366,1368,1374],{"type":1114,"value":1335},"Убедитесь, что образ (",{"type":1110,"tag":24,"props":1337,"children":1339},{"className":1338},[],[1340],{"type":1114,"value":1341},"image",{"type":1114,"value":1343},") существует и доступен. Проверьте секреты (",{"type":1110,"tag":24,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":1114,"value":1349},"imagePullSecrets",{"type":1114,"value":1351},"), настройки сети (",{"type":1110,"tag":24,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":1114,"value":1357},"networkPolicy",{"type":1114,"value":1359},") и тома (",{"type":1110,"tag":24,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":1114,"value":1365},"volumes",{"type":1114,"value":1367},"). Используйте ",{"type":1110,"tag":24,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":1114,"value":1373},"kubectl apply --dry-run=client -f manifest.yaml",{"type":1114,"value":1375}," для валидации синтаксиса.",{"data":1377,"body":1378},{},{"type":1107,"children":1379},[1380],{"type":1110,"tag":20,"props":1381,"children":1382},{},[1383,1385,1391],{"type":1114,"value":1384},"Убедитесь, что нода, на которой должен запуститься pod, готова (",{"type":1110,"tag":24,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":1114,"value":1390},"kubectl get nodes",{"type":1114,"value":1392},"). Проверьте, нет ли проблем с DNS или сетевыми политиками, блокирующими трафик.",[1394,2107],{"id":1395,"title":1396,"appliesTo":1397,"author":10,"body":1400,"canonical":1035,"code":76,"createdAt":2057,"description":2058,"difficulty":2059,"draft":1039,"estimatedTime":1040,"extension":1041,"faq":2060,"howToSteps":2073,"howToTotalTime":1074,"image":1035,"keywords":2089,"locale":1083,"meta":2095,"navigation":110,"path":1088,"platform":1086,"related":2096,"section":1091,"seo":2099,"severity":2100,"stem":2101,"summary":2102,"tags":2103,"twitterCreator":1035,"twitterSite":1035,"type":1102,"updatedAt":2057,"__hash__":2106},"content_ru/guides/linux/kubectl-basics.md","Основы kubectl: управление кластером Kubernetes из командной строки",[1398,1399],"Kubernetes 1.24+","kubectl 1.24+",{"type":12,"value":1401,"toc":2047},[1402,1406,1409,1411,1414,1425,1429,1432,1447,1450,1462,1465,1469,1472,1485,1488,1511,1514,1528,1532,1535,1551,1557,1661,1664,1678,1681,1697,1700,1723,1727,1730,1751,1754,1773,1776,1798,1801,1815,1818,1839,1843,1846,1859,1862,1880,1883,1898,1901,1939,1941,1944,2000,2002,2005,2015,2021,2031,2037,2044],[1403,1404,1396],"h1",{"id":1405},"основы-kubectl-управление-кластером-kubernetes-из-командной-строки",[20,1407,1408],{},"kubectl — это основной инструмент для управления Kubernetes-кластерами. Он позволяет выполнять все операции по созданию, обновлению и удалению ресурсов кластера прямо из командной строки. Этот гайд поможет вам освоить базовые команды kubectl для эффективной работы с Kubernetes.",[15,1410,31],{"id":30},[20,1412,1413],{},"Перед началом работы убедитесь, что:",[152,1415,1416,1419,1422],{},[39,1417,1418],{},"У вас установлен kubectl версии 1.24 или выше",[39,1420,1421],{},"Вы подключены к рабочему Kubernetes-кластеру",[39,1423,1424],{},"У вас есть права на создание и управление ресурсами кластера",[15,1426,1428],{"id":1427},"шаг-1-проверка-установки-и-версии-kubectl","Шаг 1: Проверка установки и версии kubectl",[20,1430,1431],{},"Сначала убедимся, что kubectl установлен и подключен к кластеру:",[71,1433,1435],{"className":73,"code":1434,"language":75,"meta":76,"style":76},"kubectl version --client\n",[24,1436,1437],{"__ignoreMap":76},[80,1438,1439,1441,1444],{"class":82,"line":83},[80,1440,26],{"class":93},[80,1442,1443],{"class":96}," version",[80,1445,1446],{"class":103}," --client\n",[20,1448,1449],{},"Если kubectl установлен, вы увидите информацию о версии клиента. Чтобы проверить подключение к кластеру:",[71,1451,1453],{"className":73,"code":1452,"language":75,"meta":76,"style":76},"kubectl cluster-info\n",[24,1454,1455],{"__ignoreMap":76},[80,1456,1457,1459],{"class":82,"line":83},[80,1458,26],{"class":93},[80,1460,1461],{"class":96}," cluster-info\n",[20,1463,1464],{},"Эта команда покажет URL API сервера и состояние подключения к кластеру.",[15,1466,1468],{"id":1467},"шаг-2-просмотр-информации-о-кластере","Шаг 2: Просмотр информации о кластере",[20,1470,1471],{},"Получите базовую информацию о кластере и его узлах:",[71,1473,1475],{"className":73,"code":1474,"language":75,"meta":76,"style":76},"kubectl get nodes\n",[24,1476,1477],{"__ignoreMap":76},[80,1478,1479,1481,1483],{"class":82,"line":83},[80,1480,26],{"class":93},[80,1482,97],{"class":96},[80,1484,626],{"class":96},[20,1486,1487],{},"Эта команда отобразит список всех узлов в кластере с их статусами. Чтобы получить более подробную информацию об узле:",[71,1489,1491],{"className":73,"code":1490,"language":75,"meta":76,"style":76},"kubectl describe node \u003Cимя-узла>\n",[24,1492,1493],{"__ignoreMap":76},[80,1494,1495,1497,1499,1501,1503,1506,1509],{"class":82,"line":83},[80,1496,26],{"class":93},[80,1498,219],{"class":96},[80,1500,824],{"class":96},[80,1502,133],{"class":132},[80,1504,1505],{"class":96},"имя-узл",[80,1507,1508],{"class":139},"а",[80,1510,143],{"class":132},[20,1512,1513],{},"Вы также можете просмотреть все пространства имен в кластере:",[71,1515,1517],{"className":73,"code":1516,"language":75,"meta":76,"style":76},"kubectl get namespaces\n",[24,1518,1519],{"__ignoreMap":76},[80,1520,1521,1523,1525],{"class":82,"line":83},[80,1522,26],{"class":93},[80,1524,97],{"class":96},[80,1526,1527],{"class":96}," namespaces\n",[15,1529,1531],{"id":1530},"шаг-3-создание-и-управление-подами","Шаг 3: Создание и управление подами",[20,1533,1534],{},"Создайте простой под из YAML-файла:",[71,1536,1538],{"className":73,"code":1537,"language":75,"meta":76,"style":76},"kubectl apply -f example-pod.yaml\n",[24,1539,1540],{"__ignoreMap":76},[80,1541,1542,1544,1546,1548],{"class":82,"line":83},[80,1543,26],{"class":93},[80,1545,664],{"class":96},[80,1547,670],{"class":103},[80,1549,1550],{"class":96}," example-pod.yaml\n",[20,1552,1553,1554,980],{},"Пример содержимого ",[24,1555,1556],{},"example-pod.yaml",[71,1558,1562],{"className":1559,"code":1560,"language":1561,"meta":76,"style":76},"language-yaml shiki shiki-themes github-light github-dark","apiVersion: v1\nkind: Pod\nmetadata:\n  name: example-pod\nspec:\n  containers:\n  - name: nginx\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n","yaml",[24,1563,1564,1576,1586,1594,1604,1611,1618,1631,1641,1648],{"__ignoreMap":76},[80,1565,1566,1570,1573],{"class":82,"line":83},[80,1567,1569],{"class":1568},"s9eBZ","apiVersion",[80,1571,1572],{"class":139},": ",[80,1574,1575],{"class":96},"v1\n",[80,1577,1578,1581,1583],{"class":82,"line":90},[80,1579,1580],{"class":1568},"kind",[80,1582,1572],{"class":139},[80,1584,1585],{"class":96},"Pod\n",[80,1587,1588,1591],{"class":82,"line":107},[80,1589,1590],{"class":1568},"metadata",[80,1592,1593],{"class":139},":\n",[80,1595,1596,1599,1601],{"class":82,"line":114},[80,1597,1598],{"class":1568},"  name",[80,1600,1572],{"class":139},[80,1602,1603],{"class":96},"example-pod\n",[80,1605,1606,1609],{"class":82,"line":120},[80,1607,1608],{"class":1568},"spec",[80,1610,1593],{"class":139},[80,1612,1613,1616],{"class":82,"line":427},[80,1614,1615],{"class":1568},"  containers",[80,1617,1593],{"class":139},[80,1619,1620,1623,1626,1628],{"class":82,"line":432},[80,1621,1622],{"class":139},"  - ",[80,1624,1625],{"class":1568},"name",[80,1627,1572],{"class":139},[80,1629,1630],{"class":96},"nginx\n",[80,1632,1633,1636,1638],{"class":82,"line":438},[80,1634,1635],{"class":1568},"    image",[80,1637,1572],{"class":139},[80,1639,1640],{"class":96},"nginx:latest\n",[80,1642,1643,1646],{"class":82,"line":466},[80,1644,1645],{"class":1568},"    ports",[80,1647,1593],{"class":139},[80,1649,1650,1653,1656,1658],{"class":82,"line":471},[80,1651,1652],{"class":139},"    - ",[80,1654,1655],{"class":1568},"containerPort",[80,1657,1572],{"class":139},[80,1659,1660],{"class":103},"80\n",[20,1662,1663],{},"Просмотрите созданные поды:",[71,1665,1667],{"className":73,"code":1666,"language":75,"meta":76,"style":76},"kubectl get pods\n",[24,1668,1669],{"__ignoreMap":76},[80,1670,1671,1673,1675],{"class":82,"line":83},[80,1672,26],{"class":93},[80,1674,97],{"class":96},[80,1676,1677],{"class":96}," pods\n",[20,1679,1680],{},"Для получения подробной информации о поде:",[71,1682,1684],{"className":73,"code":1683,"language":75,"meta":76,"style":76},"kubectl describe pod example-pod\n",[24,1685,1686],{"__ignoreMap":76},[80,1687,1688,1690,1692,1694],{"class":82,"line":83},[80,1689,26],{"class":93},[80,1691,219],{"class":96},[80,1693,222],{"class":96},[80,1695,1696],{"class":96}," example-pod\n",[20,1698,1699],{},"Выполните команду внутри пода:",[71,1701,1703],{"className":73,"code":1702,"language":75,"meta":76,"style":76},"kubectl exec example-pod -- ls /app\n",[24,1704,1705],{"__ignoreMap":76},[80,1706,1707,1709,1712,1715,1717,1720],{"class":82,"line":83},[80,1708,26],{"class":93},[80,1710,1711],{"class":96}," exec",[80,1713,1714],{"class":96}," example-pod",[80,1716,777],{"class":103},[80,1718,1719],{"class":96}," ls",[80,1721,1722],{"class":96}," /app\n",[15,1724,1726],{"id":1725},"шаг-4-работа-с-сервисами-и-развертываниями","Шаг 4: Работа с сервисами и развертываниями",[20,1728,1729],{},"Создайте развертывание:",[71,1731,1733],{"className":73,"code":1732,"language":75,"meta":76,"style":76},"kubectl create deployment nginx-deployment --image=nginx:latest\n",[24,1734,1735],{"__ignoreMap":76},[80,1736,1737,1739,1742,1745,1748],{"class":82,"line":83},[80,1738,26],{"class":93},[80,1740,1741],{"class":96}," create",[80,1743,1744],{"class":96}," deployment",[80,1746,1747],{"class":96}," nginx-deployment",[80,1749,1750],{"class":103}," --image=nginx:latest\n",[20,1752,1753],{},"Масштабируйте развертывание:",[71,1755,1757],{"className":73,"code":1756,"language":75,"meta":76,"style":76},"kubectl scale deployment nginx-deployment --replicas=3\n",[24,1758,1759],{"__ignoreMap":76},[80,1760,1761,1763,1766,1768,1770],{"class":82,"line":83},[80,1762,26],{"class":93},[80,1764,1765],{"class":96}," scale",[80,1767,1744],{"class":96},[80,1769,1747],{"class":96},[80,1771,1772],{"class":103}," --replicas=3\n",[20,1774,1775],{},"Создайте сервис для доступа к развертыванию:",[71,1777,1779],{"className":73,"code":1778,"language":75,"meta":76,"style":76},"kubectl expose deployment nginx-deployment --port=80 --type=NodePort\n",[24,1780,1781],{"__ignoreMap":76},[80,1782,1783,1785,1788,1790,1792,1795],{"class":82,"line":83},[80,1784,26],{"class":93},[80,1786,1787],{"class":96}," expose",[80,1789,1744],{"class":96},[80,1791,1747],{"class":96},[80,1793,1794],{"class":103}," --port=80",[80,1796,1797],{"class":103}," --type=NodePort\n",[20,1799,1800],{},"Просмотрите созданные сервисы:",[71,1802,1804],{"className":73,"code":1803,"language":75,"meta":76,"style":76},"kubectl get services\n",[24,1805,1806],{"__ignoreMap":76},[80,1807,1808,1810,1812],{"class":82,"line":83},[80,1809,26],{"class":93},[80,1811,97],{"class":96},[80,1813,1814],{"class":96}," services\n",[20,1816,1817],{},"Обновите образ в развертывании:",[71,1819,1821],{"className":73,"code":1820,"language":75,"meta":76,"style":76},"kubectl set image deployment/nginx-deployment nginx=nginx:1.21\n",[24,1822,1823],{"__ignoreMap":76},[80,1824,1825,1827,1830,1833,1836],{"class":82,"line":83},[80,1826,26],{"class":93},[80,1828,1829],{"class":96}," set",[80,1831,1832],{"class":96}," image",[80,1834,1835],{"class":96}," deployment/nginx-deployment",[80,1837,1838],{"class":96}," nginx=nginx:1.21\n",[15,1840,1842],{"id":1841},"шаг-5-просмотр-логов-и-отладка","Шаг 5: Просмотр логов и отладка",[20,1844,1845],{},"Получите доступ к логам пода:",[71,1847,1849],{"className":73,"code":1848,"language":75,"meta":76,"style":76},"kubectl logs example-pod\n",[24,1850,1851],{"__ignoreMap":76},[80,1852,1853,1855,1857],{"class":82,"line":83},[80,1854,26],{"class":93},[80,1856,361],{"class":96},[80,1858,1696],{"class":96},[20,1860,1861],{},"Для подов с несколькими контейнерами:",[71,1863,1865],{"className":73,"code":1864,"language":75,"meta":76,"style":76},"kubectl logs example-pod -c nginx\n",[24,1866,1867],{"__ignoreMap":76},[80,1868,1869,1871,1873,1875,1877],{"class":82,"line":83},[80,1870,26],{"class":93},[80,1872,361],{"class":96},[80,1874,1714],{"class":96},[80,1876,405],{"class":103},[80,1878,1879],{"class":96}," nginx\n",[20,1881,1882],{},"Отследите логи в реальном времени:",[71,1884,1886],{"className":73,"code":1885,"language":75,"meta":76,"style":76},"kubectl logs -f example-pod\n",[24,1887,1888],{"__ignoreMap":76},[80,1889,1890,1892,1894,1896],{"class":82,"line":83},[80,1891,26],{"class":93},[80,1893,361],{"class":96},[80,1895,670],{"class":103},[80,1897,1696],{"class":96},[20,1899,1900],{},"Удалите ресурсы:",[71,1902,1904],{"className":73,"code":1903,"language":75,"meta":76,"style":76},"kubectl delete pod example-pod\nkubectl delete deployment nginx-deployment\nkubectl delete service nginx-deployment\n",[24,1905,1906,1917,1928],{"__ignoreMap":76},[80,1907,1908,1910,1913,1915],{"class":82,"line":83},[80,1909,26],{"class":93},[80,1911,1912],{"class":96}," delete",[80,1914,222],{"class":96},[80,1916,1696],{"class":96},[80,1918,1919,1921,1923,1925],{"class":82,"line":90},[80,1920,26],{"class":93},[80,1922,1912],{"class":96},[80,1924,1744],{"class":96},[80,1926,1927],{"class":96}," nginx-deployment\n",[80,1929,1930,1932,1934,1937],{"class":82,"line":107},[80,1931,26],{"class":93},[80,1933,1912],{"class":96},[80,1935,1936],{"class":96}," service",[80,1938,1927],{"class":96},[15,1940,878],{"id":877},[20,1942,1943],{},"Чтобы убедиться, что все работает корректно:",[36,1945,1946,1963,1978],{},[39,1947,1948,1949,980,1951],{},"Проверьте, что все поды находятся в статусе ",[24,1950,924],{},[71,1952,1953],{"className":73,"code":1666,"language":75,"meta":76,"style":76},[24,1954,1955],{"__ignoreMap":76},[80,1956,1957,1959,1961],{"class":82,"line":83},[80,1958,26],{"class":93},[80,1960,97],{"class":96},[80,1962,1677],{"class":96},[39,1964,1965,1966],{},"Убедитесь, что сервисы доступны:",[71,1967,1968],{"className":73,"code":1803,"language":75,"meta":76,"style":76},[24,1969,1970],{"__ignoreMap":76},[80,1971,1972,1974,1976],{"class":82,"line":83},[80,1973,26],{"class":93},[80,1975,97],{"class":96},[80,1977,1814],{"class":96},[39,1979,1980,1981],{},"Проверьте логи на наличие ошибок:",[71,1982,1984],{"className":73,"code":1983,"language":75,"meta":76,"style":76},"kubectl logs \u003Cpod-name>\n",[24,1985,1986],{"__ignoreMap":76},[80,1987,1988,1990,1992,1994,1996,1998],{"class":82,"line":83},[80,1989,26],{"class":93},[80,1991,361],{"class":96},[80,1993,133],{"class":132},[80,1995,227],{"class":96},[80,1997,140],{"class":139},[80,1999,143],{"class":132},[15,2001,941],{"id":940},[20,2003,2004],{},"При работе с kubectl могут возникнуть следующие проблемы:",[20,2006,2007,2010,2011,2014],{},[204,2008,2009],{},"Ошибка подключения к кластеру:","\nЕсли kubectl не может подключиться к кластеру, проверьте файл конфигурации ",[24,2012,2013],{},"~/.kube/config"," и убедитесь, что контекст указан правильно.",[20,2016,2017,2020],{},[204,2018,2019],{},"Права доступа:","\nЕсли возникают ошибки доступа, убедитесь, что у вас есть необходимые права RBAC для выполнения операций.",[20,2022,2023,2026,2027,2030],{},[204,2024,2025],{},"Неверный синтаксис YAML:","\nПри создании ресурсов из YAML-файлов внимательно проверяйте синтаксис. Используйте ",[24,2028,2029],{},"kubectl apply --dry-run=client -f file.yaml"," для проверки перед применением.",[20,2032,2033,2036],{},[204,2034,2035],{},"Недостаточно ресурсов:","\nЕсли поды не могут запуститься, проверьте доступность ресурсов в кластере и лимиты ресурсов в YAML-файле.",[20,2038,2039,2040,2043],{},"Для получения дополнительной информации используйте команду ",[24,2041,2042],{},"kubectl explain \u003Cресурс>"," для просмотра схемы ресурсов Kubernetes.",[1018,2045,2046],{},"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 .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 .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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":76,"searchDepth":90,"depth":90,"links":2048},[2049,2050,2051,2052,2053,2054,2055,2056],{"id":30,"depth":90,"text":31},{"id":1427,"depth":90,"text":1428},{"id":1467,"depth":90,"text":1468},{"id":1530,"depth":90,"text":1531},{"id":1725,"depth":90,"text":1726},{"id":1841,"depth":90,"text":1842},{"id":877,"depth":90,"text":878},{"id":940,"depth":90,"text":941},"2026-04-09 18:28:39","Подробный гайд по основным командам kubectl для управления Kubernetes. Научитесь создавать, обновлять и удалять ресурсы кластера.","easy",[2061,2064,2067,2070],{"question":2062,"answer":2063},"Что такое kubectl и зачем он нужен?","kubectl — это CLI-интерфейс для управления Kubernetes-кластером. Он позволяет создавать, обновлять и удалять ресурсы кластера, а также просматривать их состояние.",{"question":2065,"answer":2066},"Как проверить, что kubectl установлен?","Выполните команду `kubectl version --client`. Если kubectl установлен, вы увидите информацию о версии клиента.",{"question":2068,"answer":2069},"Как подключиться к кластеру Kubernetes?","kubectl автоматически подключается к кластеру, указанному в файле ~/.kube/config. Если у вас несколько кластеров, используйте `kubectl config use-context` для переключения.",{"question":2071,"answer":2072},"Как получить помощь по kubectl?","Используйте `kubectl --help` для общей помощи или `kubectl \u003Ccommand> --help` для помощи по конкретной команде.",[2074,2077,2080,2083,2086],{"name":2075,"text":2076},"Проверка установки и версии kubectl","Убедитесь, что kubectl установлен и подключен к кластеру.",{"name":2078,"text":2079},"Просмотр информации о кластере","Получите базовую информацию о кластере и его узлах.",{"name":2081,"text":2082},"Создание и управление подами","Создайте поды, просмотрите их статус и выполните команды внутри.",{"name":2084,"text":2085},"Работа с сервисами и развертываниями","Создайте сервисы и развертывания, обновите и удалите ресурсы.",{"name":2087,"text":2088},"Просмотр логов и отладка","Получите доступ к логам подов и выполните отладку.",[2090,2091,2092,2093,2094],"kubectl команды","управление kubernetes","kubectl basics","kubectl tutorial","kubernetes CLI",{},[2097,2098],"/guides/linux/kubectl-advanced","/guides/linux/kubernetes-installation",{"title":1396,"description":2058},"low","guides/linux/kubectl-basics","Изучите основные команды kubectl для эффективного управления Kubernetes-кластером. Этот гайд поможет вам освоить базовые операции с подами, сервисами и развертываниями.",[1096,26,1086,2104,2105],"CLI","containers","3tsUayA15nujFfvFTHB_B4BIZZ6hzN7lpDy_pMyQXPE",{"id":2108,"title":2109,"appliesTo":2110,"author":10,"body":2115,"canonical":1035,"code":177,"createdAt":2566,"description":2567,"difficulty":1038,"draft":1039,"estimatedTime":2568,"extension":1041,"faq":2569,"howToSteps":2579,"howToTotalTime":2592,"image":1035,"keywords":2593,"locale":1083,"meta":2601,"navigation":110,"path":1090,"platform":2602,"related":2603,"section":2607,"seo":2608,"severity":2609,"stem":2610,"summary":2611,"tags":2612,"twitterCreator":1035,"twitterSite":1035,"type":2617,"updatedAt":2566,"__hash__":2618},"content_ru/errors/linux/k8s-image-pull-error.md","Исправляем ErrImagePull в Kubernetes: проверенные способы",[2111,2112,2113,2114],"Kubernetes v1.24+","Containerd 1.6+","Docker Container Runtime","Ubuntu 22.04 / RHEL 9 ноды",{"type":12,"value":2116,"toc":2555},[2117,2121,2133,2142,2146,2179,2183,2187,2190,2210,2220,2224,2227,2256,2269,2271,2275,2278,2329,2332,2404,2411,2415,2418,2493,2496,2500,2552],[15,2118,2120],{"id":2119},"что-означает-ошибка-errimagepull","Что означает ошибка ErrImagePull",[20,2122,2123,2124,2126,2127,2129,2130,275],{},"Ошибка ",[24,2125,177],{}," (и её производная ",[24,2128,174],{},") появляется, когда kubelet на узле кластера не может скачать указанный контейнерный образ из реестра. В логах вы увидите сообщение вида: ",[24,2131,2132],{},"Failed to pull image \"registry.example.com/app:v1\": rpc error: code = Unknown desc = failed to pull and unpack image",[20,2134,2135,2136,2138,2139,2141],{},"Проблема блокирует запуск пода на этапе инициализации (",[24,2137,158],{}," → ",[24,2140,174],{},"). Сервис остаётся недоступным, а оркестратор продолжает бесконечно ретраить операцию, постепенно увеличивая интервалы между попытками.",[15,2143,2145],{"id":2144},"причины-возникновения","Причины возникновения",[152,2147,2148,2154,2163,2166,2169],{},[39,2149,2150,2151,188],{},"Опечатка в имени образа или указание несуществующего тега (реестр возвращает ",[24,2152,2153],{},"404 Not Found",[39,2155,2156,2157,260,2160,188],{},"Отсутствие авторизации для приватного реестра (",[24,2158,2159],{},"403 Forbidden",[24,2161,2162],{},"401 Unauthorized",[39,2164,2165],{},"Блокировка исходящих соединений файрволом, отсутствие маршрутизации или некорректная настройка HTTP/HTTPS-прокси на нодах.",[39,2167,2168],{},"Сбой локального DNS-резолвера, из-за которого домен реестра не преобразуется в IP-адрес.",[39,2170,2171,2172,260,2175,2178],{},"Нехватка свободного места на разделе ",[24,2173,2174],{},"/var/lib/containerd",[24,2176,2177],{},"/var/lib/docker",". Кэширование обрывается, и загрузка отменяется.",[15,2180,2182],{"id":2181},"способы-решения","Способы решения",[63,2184,2186],{"id":2185},"способ-1-валидация-имени-и-тега-образа","Способ 1: Валидация имени и тега образа",[20,2188,2189],{},"Частая причина — человеческий фактор при редактировании манифеста. Убедитесь, что путь к репозиторию, имя образа и тег совпадают с реально опубликованной версией.",[36,2191,2192,2198,2204],{},[39,2193,2194,2195],{},"Найдите проблемный под: ",[24,2196,2197],{},"kubectl get pods -n \u003Cnamespace> | grep ErrImagePull",[39,2199,2200,2201],{},"Посмотрите текущую конфигурацию: ",[24,2202,2203],{},"kubectl get pod \u003Cpod-name> -n \u003Cnamespace> -o jsonpath='{.spec.containers[*].image}'",[39,2205,2206,2207],{},"Исправьте деплоймент: ",[24,2208,2209],{},"kubectl set image deployment/\u003Cname> \u003Ccontainer-name>=registry.example.com/app:v1.2.3",[2211,2212,2213],"blockquote",{},[20,2214,2215,2216,2219],{},"💡 Совет: Всегда используйте конкретные теги или SHA-дайджесты. Тег ",[24,2217,2218],{},"latest"," усложняет отладку и может привести к загрузке нестабильной сборки.",[63,2221,2223],{"id":2222},"способ-2-диагностика-сетевых-ограничений","Способ 2: Диагностика сетевых ограничений",[20,2225,2226],{},"Если образ публичный, но не грузится, проблема почти наверняка в сети узла. Kubelet использует системный стек ноды, а не сеть пода.",[36,2228,2229,2235,2241,2247],{},[39,2230,2231,2232],{},"Подключитесь к ноде по SSH: ",[24,2233,2234],{},"ssh user@k8s-node-01",[39,2236,2237,2238],{},"Проверьте резолв: ",[24,2239,2240],{},"nslookup registry.example.com",[39,2242,2243,2244],{},"Попробуйте скачать образ напрямую: ",[24,2245,2246],{},"crictl pull registry.example.com/app:v1.2.3",[39,2248,2249,2250,260,2253],{},"Если команда падает, проверьте прокси: ",[24,2251,2252],{},"systemctl show docker | grep -i proxy",[24,2254,2255],{},"env | grep -i proxy",[20,2257,2258,2259,2262,2263,260,2266,275],{},"Для корпоративных сред добавьте домены реестра в ",[24,2260,2261],{},"noProxy"," конфигурации systemd для ",[24,2264,2265],{},"containerd.service",[24,2267,2268],{},"docker.service",[507,2270],{},[63,2272,2274],{"id":2273},"способ-3-настройка-imagepullsecrets-для-приватных-реестров","Способ 3: Настройка imagePullSecrets для приватных реестров",[20,2276,2277],{},"Без корректного секрета kubelet не сможет аутентифицироваться в Docker Hub, GitLab Registry или AWS ECR. Секрет должен создаваться в том же неймспейсе, где разворачивается приложение.",[71,2279,2281],{"className":73,"code":2280,"language":75,"meta":76,"style":76},"kubectl create secret docker-registry regcred \\\n  --docker-server=https://registry.example.com \\\n  --docker-username=deploy-bot \\\n  --docker-password=$CI_TOKEN \\\n  --namespace=production\n",[24,2282,2283,2300,2307,2314,2324],{"__ignoreMap":76},[80,2284,2285,2287,2289,2291,2294,2297],{"class":82,"line":83},[80,2286,26],{"class":93},[80,2288,1741],{"class":96},[80,2290,696],{"class":96},[80,2292,2293],{"class":96}," docker-registry",[80,2295,2296],{"class":96}," regcred",[80,2298,2299],{"class":103}," \\\n",[80,2301,2302,2305],{"class":82,"line":90},[80,2303,2304],{"class":103},"  --docker-server=https://registry.example.com",[80,2306,2299],{"class":103},[80,2308,2309,2312],{"class":82,"line":107},[80,2310,2311],{"class":103},"  --docker-username=deploy-bot",[80,2313,2299],{"class":103},[80,2315,2316,2319,2322],{"class":82,"line":114},[80,2317,2318],{"class":103},"  --docker-password=",[80,2320,2321],{"class":139},"$CI_TOKEN",[80,2323,2299],{"class":103},[80,2325,2326],{"class":82,"line":120},[80,2327,2328],{"class":103},"  --namespace=production\n",[20,2330,2331],{},"Привяжите секрет к деплойменту:",[71,2333,2335],{"className":1559,"code":2334,"language":1561,"meta":76,"style":76},"spec:\n  template:\n    spec:\n      containers:\n        - name: app\n          image: registry.example.com/app:v1.2.3\n      imagePullSecrets:\n        - name: regcred\n",[24,2336,2337,2343,2350,2357,2364,2376,2386,2393],{"__ignoreMap":76},[80,2338,2339,2341],{"class":82,"line":83},[80,2340,1608],{"class":1568},[80,2342,1593],{"class":139},[80,2344,2345,2348],{"class":82,"line":90},[80,2346,2347],{"class":1568},"  template",[80,2349,1593],{"class":139},[80,2351,2352,2355],{"class":82,"line":107},[80,2353,2354],{"class":1568},"    spec",[80,2356,1593],{"class":139},[80,2358,2359,2362],{"class":82,"line":114},[80,2360,2361],{"class":1568},"      containers",[80,2363,1593],{"class":139},[80,2365,2366,2369,2371,2373],{"class":82,"line":120},[80,2367,2368],{"class":139},"        - ",[80,2370,1625],{"class":1568},[80,2372,1572],{"class":139},[80,2374,2375],{"class":96},"app\n",[80,2377,2378,2381,2383],{"class":82,"line":427},[80,2379,2380],{"class":1568},"          image",[80,2382,1572],{"class":139},[80,2384,2385],{"class":96},"registry.example.com/app:v1.2.3\n",[80,2387,2388,2391],{"class":82,"line":432},[80,2389,2390],{"class":1568},"      imagePullSecrets",[80,2392,1593],{"class":139},[80,2394,2395,2397,2399,2401],{"class":82,"line":438},[80,2396,2368],{"class":139},[80,2398,1625],{"class":1568},[80,2400,1572],{"class":139},[80,2402,2403],{"class":96},"regcred\n",[20,2405,2406,2407,2410],{},"Проверьте статус: ",[24,2408,2409],{},"kubectl get secret regcred -o yaml"," и убедитесь, что токен не истёк.",[63,2412,2414],{"id":2413},"способ-4-очистка-повреждённого-кэша-рантайма","Способ 4: Очистка повреждённого кэша рантайма",[20,2416,2417],{},"Иногда частичная загрузка оставляет «битые» слои, которые блокируют повторные попытки. Рантайм не может распознать их и постоянно возвращает ошибку.",[71,2419,2421],{"className":73,"code":2420,"language":75,"meta":76,"style":76},"# Останавливаем проблемный под, чтобы kubelet перестал его трогать\nkubectl scale deployment \u003Cname> --replicas=0\n\n# Очищаем локальный кэш на ноде\nsudo crictl rmi registry.example.com/app:v1.2.3\n\n# Перезапускаем runtime\nsudo systemctl restart containerd\n",[24,2422,2423,2428,2448,2452,2457,2471,2475,2480],{"__ignoreMap":76},[80,2424,2425],{"class":82,"line":83},[80,2426,2427],{"class":86},"# Останавливаем проблемный под, чтобы kubelet перестал его трогать\n",[80,2429,2430,2432,2434,2436,2438,2441,2443,2445],{"class":82,"line":90},[80,2431,26],{"class":93},[80,2433,1765],{"class":96},[80,2435,1744],{"class":96},[80,2437,133],{"class":132},[80,2439,2440],{"class":96},"nam",[80,2442,140],{"class":139},[80,2444,232],{"class":132},[80,2446,2447],{"class":103}," --replicas=0\n",[80,2449,2450],{"class":82,"line":107},[80,2451,111],{"emptyLinePlaceholder":110},[80,2453,2454],{"class":82,"line":114},[80,2455,2456],{"class":86},"# Очищаем локальный кэш на ноде\n",[80,2458,2459,2462,2465,2468],{"class":82,"line":120},[80,2460,2461],{"class":93},"sudo",[80,2463,2464],{"class":96}," crictl",[80,2466,2467],{"class":96}," rmi",[80,2469,2470],{"class":96}," registry.example.com/app:v1.2.3\n",[80,2472,2473],{"class":82,"line":427},[80,2474,111],{"emptyLinePlaceholder":110},[80,2476,2477],{"class":82,"line":432},[80,2478,2479],{"class":86},"# Перезапускаем runtime\n",[80,2481,2482,2484,2487,2490],{"class":82,"line":438},[80,2483,2461],{"class":93},[80,2485,2486],{"class":96}," systemctl",[80,2488,2489],{"class":96}," restart",[80,2491,2492],{"class":96}," containerd\n",[20,2494,2495],{},"После запуска снова масштабируйте деплоймент до нужного количества реплик. Загрузка начнётся с чистого листа.",[15,2497,2499],{"id":2498},"профилактика","Профилактика",[152,2501,2502,2515,2529,2538],{},[39,2503,2504,2507,2508,260,2511,2514],{},[204,2505,2506],{},"Синхронизация времени",": Настройте ",[24,2509,2510],{},"chrony",[24,2512,2513],{},"systemd-timesyncd"," на всех нодах. Расхождение системных часов более чем на 5 минут ломает TLS-рукопожатия с реестрами.",[39,2516,2517,2520,2521,2524,2525,2528],{},[204,2518,2519],{},"Мониторинг места на дисках",": Поднимите ",[24,2522,2523],{},"node-exporter"," и алерты на ",[24,2526,2527],{},"NodeDiskPressure",". Забитый диск — самая тихая причина отказа загрузки.",[39,2530,2531,2534,2535,2537],{},[204,2532,2533],{},"Ротация токенов",": Для CI/CD используйте short-lived credentials и автоматизируйте обновление ",[24,2536,1349],{}," через External Secrets Operator или HashiCorp Vault.",[39,2539,2540,2543,2544,2547,2548,2551],{},[204,2541,2542],{},"Локальные зеркала",": Для крупных кластеров настройте ",[24,2545,2546],{},"registry-mirror"," в конфигурации ",[24,2549,2550],{},"containerd",". Это снизит нагрузку на публичные реестры и уберет сетевые таймауты.",[1018,2553,2554],{},"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}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}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":76,"searchDepth":90,"depth":90,"links":2556},[2557,2558,2559,2565],{"id":2119,"depth":90,"text":2120},{"id":2144,"depth":90,"text":2145},{"id":2181,"depth":90,"text":2182,"children":2560},[2561,2562,2563,2564],{"id":2185,"depth":107,"text":2186},{"id":2222,"depth":107,"text":2223},{"id":2273,"depth":107,"text":2274},{"id":2413,"depth":107,"text":2414},{"id":2498,"depth":90,"text":2499},"2026-04-05 22:34:48","Поды не загружают образы? Пошаговая инструкция по диагностике и устранению ErrImagePull в k8s. Проверьте реестр, секреты и сеть за 10 минут.","10-15 мин",[2570,2573,2576],{"question":2571,"answer":2572},"Чем отличается ImagePullBackOff от ErrImagePull?","ErrImagePull фиксирует первичный сбой загрузки. ImagePullBackOff означает, что kubelet автоматически повторяет попытки с экспоненциальной задержкой, чтобы не перегружать реестр или сеть.",{"question":2574,"answer":2575},"Как вручную проверить доступ к реестру с ноды?","Подключитесь к ноде по SSH и выполните `crictl pull \u003Cимя_образа>`. Если команда завершается ошибкой, проблема лежит в сети, прокси или учетных данных, а не в конфигурации пода.",{"question":2577,"answer":2578},"Требуется ли перезапуск кластера после исправления?","Нет. Достаточно удалить проблемный под командой `kubectl delete pod` или обновить манифест. Контроллер автоматически создаст новую копию с корректными параметрами загрузки.",[2580,2583,2586,2589],{"name":2581,"text":2582},"Диагностика статуса пода","Выполните `kubectl describe pod \u003Cpod-name>` и изучите секцию Events. Найдите точную причину отказа: Access Denied, Not Found или Network Unreachable.",{"name":2584,"text":2585},"Проверка доступа к реестру","Убедитесь, что образ существует по указанному адресу. Проверьте имя и тег, а также доступность реестра из сети кластера без использования Kubernetes.",{"name":2587,"text":2588},"Настройка imagePullSecrets","Для приватных репозиториев создайте секрет `kubectl create secret docker-registry` и привяжите его к манифесту деплоймента или сервисному аккаунту.",{"name":2590,"text":2591},"Очистка кэша и перезапуск","Удалите повреждённые образы локально через `crictl rmi` и перезапустите containerd, чтобы сбросить состояние рантайма и инициировать чистую загрузку.","PT15M",[2594,2595,2596,2597,2598,2599,2600],"kubernetes image pull error","ImagePullBackOff исправление","ErrImagePull kubectl","не грузится образ в k8s","настройка imagePullSecrets","ошибка загрузки docker образов","диагностика подов kubernetes",{},"general",[2604,2605,2606],"/guides/linux/k8s-private-registry","/errors/linux/k8s-crashloopbackoff","/guides/linux/k8s-node-diagnostics","Ошибки Kubernetes",{"title":2109,"description":2567},"high","errors/linux/k8s-image-pull-error","Статья объясняет причины сбоя загрузки контейнерных образов в кластере Kubernetes и предлагает проверенные методы их устранения. Вы быстро восстановите работу сервисов без перезапуска нод.",[1096,1099,2613,2614,2550,2615,2616],"ошибки оркестрации","docker","imagepullbackoff","devops","error","h4xMBZkPjf7n0nbN-1MD_7iEYnXWrXK9X_aSOhPDdhM"]