[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/errors/linux/k8s-pod-pending":3,"mdc-u9m3ko-key":1063,"mdc--o8bfxr-key":1073,"mdc--furmmd-key":1090,"mdc-ib9ks3-key":1098,"mdc--z4na31-key":1106,"mdc--y8dto3-key":1123,"mdc-42b5pi-key":1140,"mdc--879etz-key":1165,"related-/errors/linux/k8s-pod-crashloopbackoff,/errors/linux/k8s-imagepullbackoff,/guides/linux/k8s-troubleshooting-pods":1200},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":995,"code":27,"createdAt":996,"description":997,"difficulty":998,"draft":999,"estimatedTime":1000,"extension":1001,"faq":1002,"howToSteps":1014,"howToTotalTime":1027,"image":995,"keywords":1028,"locale":1039,"meta":1040,"navigation":1041,"path":1042,"platform":1043,"related":1044,"section":1048,"seo":1049,"severity":1050,"stem":1051,"summary":1052,"tags":1053,"twitterCreator":995,"twitterSite":995,"type":1061,"updatedAt":996,"__hash__":1062},"content_ru/errors/linux/k8s-pod-pending.md","K8s Pod Pending: причины и быстрые решения",[7,8,9,10],"Kubernetes 1.20+","Minikube 1.25+","k3s 1.20+","OpenShift 4.6+","FixPedia Team",{"type":13,"value":14,"toc":983},"minimark",[15,20,34,37,102,105,109,112,220,224,232,239,376,379,383,390,495,499,502,734,737,755,759,762,923,927,930,976,979],[16,17,19],"h2",{"id":18},"что-означает-состояние-pending-у-pod-в-kubernetes","Что означает состояние Pending у Pod в Kubernetes?",[21,22,23,24,28,29,33],"p",{},"Состояние ",[25,26,27],"strong",{},"Pending"," — это начальный этап жизненного цикла Pod в Kubernetes. Когда вы создаёте Pod (например, через ",[30,31,32],"code",{},"kubectl apply -f pod.yaml","), система принимает его, но планировщик (scheduler) ещё не нашёл подходящую ноду для запуска контейнеров. Pod остаётся в этом состоянии, пока не будут выполнены все условия для размещения.",[21,35,36],{},"Обычно это выглядит так:",[38,39,44],"pre",{"className":40,"code":41,"language":42,"meta":43,"style":43},"language-bash shiki shiki-themes github-light github-dark","$ kubectl get pods\nNAME                     READY   STATUS    RESTARTS   AGE\nmyapp-5d89d7c8b9-abcde   0/1     Pending   0          2m\n","bash","",[30,45,46,65,83],{"__ignoreMap":43},[47,48,51,55,59,62],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"sScJk","$",[47,56,58],{"class":57},"sZZnC"," kubectl",[47,60,61],{"class":57}," get",[47,63,64],{"class":57}," pods\n",[47,66,68,71,74,77,80],{"class":49,"line":67},2,[47,69,70],{"class":53},"NAME",[47,72,73],{"class":57},"                     READY",[47,75,76],{"class":57},"   STATUS",[47,78,79],{"class":57},"    RESTARTS",[47,81,82],{"class":57},"   AGE\n",[47,84,86,89,92,95,99],{"class":49,"line":85},3,[47,87,88],{"class":53},"myapp-5d89d7c8b9-abcde",[47,90,91],{"class":57},"   0/1",[47,93,94],{"class":57},"     Pending",[47,96,98],{"class":97},"sj4cs","   0",[47,100,101],{"class":57},"          2m\n",[21,103,104],{},"Если Pod завис в Pending надолго (несколько минут и более), это указывает на проблему, которая мешает планировщику выбрать ноду. Давайте разберём основные причины и решения.",[16,106,108],{"id":107},"причины-возникновения","Причины возникновения",[21,110,111],{},"Вот наиболее частые причины, по которым Pod не покидает состояние Pending:",[113,114,115,129,141,160,180,192,204],"ol",{},[116,117,118,121,124,125,128],"li",{},[25,119,120],{},"Недостаток ресурсов на нодах",[122,123],"br",{},"\nPod запрашивает через ",[30,126,127],{},"resources.requests"," больше CPU или памяти, чем доступно на любых нодах в кластере. Например, если все ноды имеют 2 ГБ свободной памяти, а Pod запрашивает 4 ГБ, он не будет запланирован.",[116,130,131,134,136,137,140],{},[25,132,133],{},"Несоответствие taints и tolerations",[122,135],{},"\nНоды могут иметь taints (например, ",[30,138,139],{},"dedicated=production:NoSchedule","), которые repel Pod без соответствующих tolerations в манифесте. Если Pod не имеет tolerations для таких taints, планировщик его не разместит.",[116,142,143,146,148,149,152,153,156,157,159],{},[25,144,145],{},"Проблемы с PersistentVolumeClaim (PVC)",[122,147],{},"\nЕсли Pod требует тома через ",[30,150,151],{},"volumeMounts"," и ",[30,154,155],{},"persistentVolumeClaim.claimName",", а соответствующий PVC находится в состоянии ",[30,158,27],{}," (например, нет доступного PV или класс хранения недоступен), то Pod тоже останется в Pending.",[116,161,162,165,167,168,171,172,175,176,179],{},[25,163,164],{},"Node selector, affinity, или anti-affinity",[122,166],{},"\nУсловия в ",[30,169,170],{},"spec.nodeSelector",", ",[30,173,174],{},"spec.affinity"," могут быть слишком строгими. Например, если вы указали ",[30,177,178],{},"nodeSelector: {disktype: ssd}",", но ни одна нода не имеет такой метки, Pod не будет запланирован.",[116,181,182,185,187,188,191],{},[25,183,184],{},"Исчерпание ResourceQuota",[122,186],{},"\nВ namespace может быть установлен ",[30,189,190],{},"ResourceQuota",", который ограничивает общее количество Pod, CPU или памяти. Если квота превышена, новые Pod останутся в Pending.",[116,193,194,197,199,200,203],{},[25,195,196],{},"Ограничение на количество Pod на ноде",[122,198],{},"\nПараметр ",[30,201,202],{},"maxPods"," в конфигурации kubelet (обычно 110 по умолчанию) может быть достигнут на нодах, и планировщик не сможет добавить ещё Pod.",[116,205,206,209,211,212,215,216,219],{},[25,207,208],{},"Отсутствие подходящих нод",[122,210],{},"\nВсе ноды могут быть заблокированы для обслуживания (например, через ",[30,213,214],{},"kubectl cordon",") или находятся в состоянии ",[30,217,218],{},"NotReady",".",[16,221,223],{"id":222},"способы-решения","Способы решения",[225,226,228,229],"h3",{"id":227},"способ-1-анализ-событий-pod-с-помощью-kubectl-describe","Способ 1: Анализ событий Pod с помощью ",[30,230,231],{},"kubectl describe",[21,233,234,235,238],{},"Это первый и самый важный шаг. Команда ",[30,236,237],{},"kubectl describe pod"," показывает события (Events), где scheduler объясняет, почему не может разместить Pod.",[113,240,241,272,323],{},[116,242,243,244],{},"Найдите имя Pod и namespace:",[38,245,247],{"className":40,"code":246,"language":42,"meta":43,"style":43},"kubectl get pods --all-namespaces | grep Pending\n",[30,248,249],{"__ignoreMap":43},[47,250,251,254,256,259,262,266,269],{"class":49,"line":50},[47,252,253],{"class":53},"kubectl",[47,255,61],{"class":57},[47,257,258],{"class":57}," pods",[47,260,261],{"class":97}," --all-namespaces",[47,263,265],{"class":264},"szBVR"," |",[47,267,268],{"class":53}," grep",[47,270,271],{"class":57}," Pending\n",[116,273,274,275,152,278,281,282],{},"Описайте Pod, заменив ",[30,276,277],{},"\u003Cpod-name>",[30,279,280],{},"\u003Cnamespace>",":",[38,283,285],{"className":40,"code":284,"language":42,"meta":43,"style":43},"kubectl describe pod \u003Cpod-name> -n \u003Cnamespace>\n",[30,286,287],{"__ignoreMap":43},[47,288,289,291,294,297,300,303,307,310,313,315,318,320],{"class":49,"line":50},[47,290,253],{"class":53},[47,292,293],{"class":57}," describe",[47,295,296],{"class":57}," pod",[47,298,299],{"class":264}," \u003C",[47,301,302],{"class":57},"pod-nam",[47,304,306],{"class":305},"sVt8B","e",[47,308,309],{"class":264},">",[47,311,312],{"class":97}," -n",[47,314,299],{"class":264},[47,316,317],{"class":57},"namespac",[47,319,306],{"class":305},[47,321,322],{"class":264},">\n",[116,324,325,326,329,330,338,340,341,344,345,347,348,366],{},"В выводе найдите раздел ",[25,327,328],{},"Events",". Пример сообщения:",[38,331,336],{"className":332,"code":334,"language":335},[333],"language-text","Events:\n  Type    Reason            Age   From               Message\n  ----    ------            ----  ----               -------\n  Normal  Scheduled         5m    default-scheduler  Successfully assigned default/myapp-5d89d7c8b9-abcde to node-1\n  Warning FailedScheduling  4m    default-scheduler  0/3 nodes are available: 3 Insufficient cpu.\n","text",[30,337,334],{"__ignoreMap":43},[122,339],{},"Здесь ",[30,342,343],{},"Insufficient cpu"," указывает на нехватку CPU.",[122,346],{},"Другие возможные сообщения:",[349,350,351,356,361],"ul",{},[116,352,353],{},[30,354,355],{},"0/3 nodes are available: 3 node(s) had taint {key:value}, that the pod didn't tolerate.",[116,357,358],{},[30,359,360],{},"0/3 nodes are available: 2 node(s) had volume node affinity conflict.",[116,362,363],{},[30,364,365],{},"persistentvolumeclaim \"my-pvc\" not found",[367,368,369],"blockquote",{},[21,370,371,372,375],{},"💡 ",[25,373,374],{},"Совет",": Если событий нет, возможно, Pod ещё не обработан scheduler. Подождите 1-2 минуты и повторите.",[377,378],"in-article-ad",{},[225,380,382],{"id":381},"способ-2-проверка-доступности-ресурсов-на-нодах","Способ 2: Проверка доступности ресурсов на нодах",[21,384,385,386,389],{},"После того как вы узнали причину из событий (например, ",[30,387,388],{},"Insufficient memory","), проверьте, сколько ресурсов действительно доступно.",[113,391,392,426,460],{},[116,393,394,395,410,412,413,419,421,422,425],{},"Посмотрите общее использование ресурсов нодами:",[38,396,398],{"className":40,"code":397,"language":42,"meta":43,"style":43},"kubectl top nodes\n",[30,399,400],{"__ignoreMap":43},[47,401,402,404,407],{"class":49,"line":50},[47,403,253],{"class":53},[47,405,406],{"class":57}," top",[47,408,409],{"class":57}," nodes\n",[122,411],{},"Вывод:",[38,414,417],{"className":415,"code":416,"language":335},[333],"NAME     CPU(cores)   MEMORY(bytes)\nnode-1   150m         1900Mi\nnode-2   200m         2100Mi\n",[30,418,416],{"__ignoreMap":43},[122,420],{},"Обратите внимание на ",[30,423,424],{},"MEMORY(bytes)"," — если близко к лимиту ноды, это может быть причиной.",[116,427,428,429,432,433,450,452,453,456,457,219],{},"Подробно опишите конкретную ноду (например, ",[30,430,431],{},"node-1","):",[38,434,436],{"className":40,"code":435,"language":42,"meta":43,"style":43},"kubectl describe node node-1\n",[30,437,438],{"__ignoreMap":43},[47,439,440,442,444,447],{"class":49,"line":50},[47,441,253],{"class":53},[47,443,293],{"class":57},[47,445,446],{"class":57}," node",[47,448,449],{"class":57}," node-1\n",[122,451],{},"В разделе ",[30,454,455],{},"Allocated resources"," вы увидите, сколько ресурсов уже выделено Pod'ам. Сравните с ",[30,458,459],{},"Capacity",[116,461,462,463],{},"Если ресурсы исчерпаны, у вас есть варианты:",[349,464,465,475],{},[116,466,467,470,471,474],{},[25,468,469],{},"Увеличить ресурсы кластера",": добавить новую ноду (например, через ",[30,472,473],{},"kubectl scale --replicas=2 deployment/\u003Cdeployment-name>"," если используется Deployment с автоматическим масштабированием, или вручную в облачном провайдере).",[116,476,477,480,481,152,484,487,488,491,492,219],{},[25,478,479],{},"Уменьшить запросы ресурсов в Pod",": отредактируйте манифест Pod, снизьте значения ",[30,482,483],{},"resources.requests.cpu",[30,485,486],{},"resources.requests.memory",". Например, с ",[30,489,490],{},"2Gi"," до ",[30,493,494],{},"1Gi",[225,496,498],{"id":497},"способ-3-проверка-и-корректировка-манифеста-pod","Способ 3: Проверка и корректировка манифеста Pod",[21,500,501],{},"Часто проблема кроется в самом манифесте Pod или Deployment. Проверьте следующие разделы:",[113,503,504,605,654,722],{},[116,505,506,512,514,515],{},[25,507,508,509,511],{},"Запросы ресурсов (",[30,510,127],{},")",[122,513],{},"\nУбедитесь, что запросы не превышают типичные ресурсы нод. Например, если у вас ноды по 2 ГБ RAM, не запрашивайте 1.5 ГБ на контейнер, если планируете запускать несколько контейнеров.",[38,516,520],{"className":517,"code":518,"language":519,"meta":43,"style":43},"language-yaml shiki shiki-themes github-light github-dark","spec:\n  containers:\n  - name: myapp\n    image: myapp:latest\n    resources:\n      requests:\n        memory: \"256Mi\"   # ↓ уменьшите, если нужно\n        cpu: \"250m\"\n","yaml",[30,521,522,531,538,552,563,571,579,594],{"__ignoreMap":43},[47,523,524,528],{"class":49,"line":50},[47,525,527],{"class":526},"s9eBZ","spec",[47,529,530],{"class":305},":\n",[47,532,533,536],{"class":49,"line":67},[47,534,535],{"class":526},"  containers",[47,537,530],{"class":305},[47,539,540,543,546,549],{"class":49,"line":85},[47,541,542],{"class":305},"  - ",[47,544,545],{"class":526},"name",[47,547,548],{"class":305},": ",[47,550,551],{"class":57},"myapp\n",[47,553,555,558,560],{"class":49,"line":554},4,[47,556,557],{"class":526},"    image",[47,559,548],{"class":305},[47,561,562],{"class":57},"myapp:latest\n",[47,564,566,569],{"class":49,"line":565},5,[47,567,568],{"class":526},"    resources",[47,570,530],{"class":305},[47,572,574,577],{"class":49,"line":573},6,[47,575,576],{"class":526},"      requests",[47,578,530],{"class":305},[47,580,582,585,587,590],{"class":49,"line":581},7,[47,583,584],{"class":526},"        memory",[47,586,548],{"class":305},[47,588,589],{"class":57},"\"256Mi\"",[47,591,593],{"class":592},"sJ8bj","   # ↓ уменьшите, если нужно\n",[47,595,597,600,602],{"class":49,"line":596},8,[47,598,599],{"class":526},"        cpu",[47,601,548],{"class":305},[47,603,604],{"class":57},"\"250m\"\n",[116,606,607,610,612,613,644,646,647,650,651,219],{},[25,608,609],{},"Node selector и affinity",[122,611],{},"\nПроверьте, не задаёте ли вы слишком специфичные селекторы:",[38,614,616],{"className":517,"code":615,"language":519,"meta":43,"style":43},"spec:\n  nodeSelector:\n    disktype: ssd   # Убедитесь, что ноды имеют такую метку: kubectl get nodes --show-labels\n",[30,617,618,624,631],{"__ignoreMap":43},[47,619,620,622],{"class":49,"line":50},[47,621,527],{"class":526},[47,623,530],{"class":305},[47,625,626,629],{"class":49,"line":67},[47,627,628],{"class":526},"  nodeSelector",[47,630,530],{"class":305},[47,632,633,636,638,641],{"class":49,"line":85},[47,634,635],{"class":526},"    disktype",[47,637,548],{"class":305},[47,639,640],{"class":57},"ssd",[47,642,643],{"class":592},"   # Убедитесь, что ноды имеют такую метку: kubectl get nodes --show-labels\n",[122,645],{},"Если метки нет, Pod не будет запланирован. Либо удалите ",[30,648,649],{},"nodeSelector",", либо добавьте метку на ноду: ",[30,652,653],{},"kubectl label node \u003Cnode-name> disktype=ssd",[116,655,656,659,661,662],{},[25,657,658],{},"Tolerations",[122,660],{},"\nЕсли ноды имеют taints (например, для выделенных рабочих нагрузок), Pod должен иметь соответствующие tolerations:",[38,663,665],{"className":517,"code":664,"language":519,"meta":43,"style":43},"spec:\n  tolerations:\n  - key: \"dedicated\"\n    operator: \"Equal\"\n    value: \"production\"\n    effect: \"NoSchedule\"\n",[30,666,667,673,680,692,702,712],{"__ignoreMap":43},[47,668,669,671],{"class":49,"line":50},[47,670,527],{"class":526},[47,672,530],{"class":305},[47,674,675,678],{"class":49,"line":67},[47,676,677],{"class":526},"  tolerations",[47,679,530],{"class":305},[47,681,682,684,687,689],{"class":49,"line":85},[47,683,542],{"class":305},[47,685,686],{"class":526},"key",[47,688,548],{"class":305},[47,690,691],{"class":57},"\"dedicated\"\n",[47,693,694,697,699],{"class":49,"line":554},[47,695,696],{"class":526},"    operator",[47,698,548],{"class":305},[47,700,701],{"class":57},"\"Equal\"\n",[47,703,704,707,709],{"class":49,"line":565},[47,705,706],{"class":526},"    value",[47,708,548],{"class":305},[47,710,711],{"class":57},"\"production\"\n",[47,713,714,717,719],{"class":49,"line":573},[47,715,716],{"class":526},"    effect",[47,718,548],{"class":305},[47,720,721],{"class":57},"\"NoSchedule\"\n",[116,723,724,727,729,730,733],{},[25,725,726],{},"Affinity/anti-affinity",[122,728],{},"\nСложные правила affinity могут не находить подходящих нод. Временно упростите или удалите ",[30,731,732],{},"affinity"," раздел, чтобы проверить.",[21,735,736],{},"После изменений примените манифест:",[38,738,740],{"className":40,"code":739,"language":42,"meta":43,"style":43},"kubectl apply -f pod.yaml\n",[30,741,742],{"__ignoreMap":43},[47,743,744,746,749,752],{"class":49,"line":50},[47,745,253],{"class":53},[47,747,748],{"class":57}," apply",[47,750,751],{"class":97}," -f",[47,753,754],{"class":57}," pod.yaml\n",[225,756,758],{"id":757},"способ-4-проверка-persistentvolumeclaim-pvc-и-resourcequota","Способ 4: Проверка PersistentVolumeClaim (PVC) и ResourceQuota",[21,760,761],{},"Если Pod использует хранилище, убедитесь, что PVC готово.",[113,763,764,853],{},[116,765,766,767,791,793,794,796,797,829,831,832,847,849,850,852],{},"Проверьте статус PVC:",[38,768,770],{"className":40,"code":769,"language":42,"meta":43,"style":43},"kubectl get pvc -n \u003Cnamespace>\n",[30,771,772],{"__ignoreMap":43},[47,773,774,776,778,781,783,785,787,789],{"class":49,"line":50},[47,775,253],{"class":53},[47,777,61],{"class":57},[47,779,780],{"class":57}," pvc",[47,782,312],{"class":97},[47,784,299],{"class":264},[47,786,317],{"class":57},[47,788,306],{"class":305},[47,790,322],{"class":264},[122,792],{},"Если PVC в состоянии ",[30,795,27],{},", проблема с томом. Описайте его:",[38,798,800],{"className":40,"code":799,"language":42,"meta":43,"style":43},"kubectl describe pvc \u003Cpvc-name> -n \u003Cnamespace>\n",[30,801,802],{"__ignoreMap":43},[47,803,804,806,808,810,812,815,817,819,821,823,825,827],{"class":49,"line":50},[47,805,253],{"class":53},[47,807,293],{"class":57},[47,809,780],{"class":57},[47,811,299],{"class":264},[47,813,814],{"class":57},"pvc-nam",[47,816,306],{"class":305},[47,818,309],{"class":264},[47,820,312],{"class":97},[47,822,299],{"class":264},[47,824,317],{"class":57},[47,826,306],{"class":305},[47,828,322],{"class":264},[122,830],{},"Возможные причины:",[349,833,834,841,844],{},[116,835,836,837,840],{},"Нет доступного PersistentVolume (PV) с подходящим классом хранения (",[30,838,839],{},"storageClassName",").",[116,842,843],{},"PV существует, но уже привязан к другому PVC.",[116,845,846],{},"Класс хранения не поддерживается в кластере.",[122,848],{},"Решение: создать соответствующий PV, изменить ",[30,851,839],{}," в PVC или использовать динамическое provisioning.",[116,854,855,856,907,909,910,152,913,916,917,919,920,922],{},"Проверьте ResourceQuota в namespace:",[38,857,859],{"className":40,"code":858,"language":42,"meta":43,"style":43},"kubectl get resourcequota -n \u003Cnamespace>\nkubectl describe resourcequota \u003Cquota-name> -n \u003Cnamespace>\n",[30,860,861,880],{"__ignoreMap":43},[47,862,863,865,867,870,872,874,876,878],{"class":49,"line":50},[47,864,253],{"class":53},[47,866,61],{"class":57},[47,868,869],{"class":57}," resourcequota",[47,871,312],{"class":97},[47,873,299],{"class":264},[47,875,317],{"class":57},[47,877,306],{"class":305},[47,879,322],{"class":264},[47,881,882,884,886,888,890,893,895,897,899,901,903,905],{"class":49,"line":67},[47,883,253],{"class":53},[47,885,293],{"class":57},[47,887,869],{"class":57},[47,889,299],{"class":264},[47,891,892],{"class":57},"quota-nam",[47,894,306],{"class":305},[47,896,309],{"class":264},[47,898,312],{"class":97},[47,900,299],{"class":264},[47,902,317],{"class":57},[47,904,306],{"class":305},[47,906,322],{"class":264},[122,908],{},"В выводе ищите ",[30,911,912],{},"hard",[30,914,915],{},"used"," limits. Если ",[30,918,915],{}," близко к ",[30,921,912],{},", новые Pod не будут создаваться. Увеличьте квоту или удалите лишние ресурсы.",[16,924,926],{"id":925},"профилактика","Профилактика",[21,928,929],{},"Чтобы избежать состояния Pending в будущем:",[349,931,932,942,948,958,964,970],{},[116,933,934,937,938,941],{},[25,935,936],{},"Настраивайте запросы ресурсов реалистично",": тестируйте приложение и устанавливайте ",[30,939,940],{},"requests"," на основе фактического использования, а не с запасом 100%.",[116,943,944,947],{},[25,945,946],{},"Используйте автоматическое масштабирование кластера",": если вы в облаке, настройте Cluster Autoscaler, который добавляет ноды при нехватке ресурсов.",[116,949,950,953,954,957],{},[25,951,952],{},"Регулярно мониторьте использование ресурсов",": инструменты вроде ",[30,955,956],{},"kubectl top",", Prometheus + Grafana помогут увидеть тренды и предсказать нехватку.",[116,959,960,963],{},[25,961,962],{},"Правильно настраивайте taints/tolerations и affinity",": документируйте, какие ноды для каких workloads предназначены, и проверяйте соответствие.",[116,965,966,969],{},[25,967,968],{},"Управляйте квотами ресурсов",": устанавливайте ResourceQuota в namespace с запасом, но не слишком высоким, чтобы избежать \"штурма\" ресурсов.",[116,971,972,975],{},[25,973,974],{},"Проверяйте статус хранилища",": убедитесь, что классы хранения (StorageClass) доступны и PV создаются корректно.",[21,977,978],{},"Следуя этим рекомендациям, вы значительно снизите вероятность зависания Pod в состоянии Pending и обеспечите стабильную работу ваших приложений в Kubernetes.",[980,981,982],"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 .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}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":43,"searchDepth":67,"depth":67,"links":984},[985,986,987,994],{"id":18,"depth":67,"text":19},{"id":107,"depth":67,"text":108},{"id":222,"depth":67,"text":223,"children":988},[989,991,992,993],{"id":227,"depth":85,"text":990},"Способ 1: Анализ событий Pod с помощью kubectl describe",{"id":381,"depth":85,"text":382},{"id":497,"depth":85,"text":498},{"id":757,"depth":85,"text":758},{"id":925,"depth":67,"text":926},null,"2026-02-16 18:45:46","Pod в Kubernetes остаётся в состоянии Pending? Узнайте, как диагностировать и исправить проблему за 5-10 минут. Пошаговые инструкции для Linux.","medium",false,"10-20 мин","md",[1003,1005,1008,1011],{"question":19,"answer":1004},"Состояние Pending означает, что Pod был принят системой, но ещё не запланирован на выполнение на любой ноде. Это обычно связано с нехваткой ресурсов или ограничениями.",{"question":1006,"answer":1007},"Как быстро узнать, почему Pod не запускается?","Используйте команду `kubectl describe pod \u003Cимя-пода>` и посмотрите раздел 'Events'. Там будут указаны причины, по которым планировщик не может разместить Pod.",{"question":1009,"answer":1010},"Может ли нехватка памяти на нодах вызвать Pending?","Да, если Pod запрашивает больше памяти, чем доступно на нодах, или если квоты ресурсов исчерпаны, Pod останется в Pending.",{"question":1012,"answer":1013},"Как предотвратить Pending состояние для Pod?","Настройте запросы ресурсов (requests) в манифесте Pod в соответствии с доступными ресурсами, используйте автоматическое масштабирование нод и регулярно проверяйте квоты ресурсов.",[1015,1018,1021,1024],{"name":1016,"text":1017},"Проверьте статус Pod","Выполните `kubectl get pods` и найдите Pod в состоянии Pending. Запишите его имя и namespace.",{"name":1019,"text":1020},"Изучите события Pod","Используйте `kubectl describe pod \u003Cимя-пода> -n \u003Cnamespace>` и посмотрите на раздел 'Events' в выводе. Ищите сообщения от scheduler.",{"name":1022,"text":1023},"Проверьте ресурсы нод","Запустите `kubectl describe nodes` или `kubectl top nodes` чтобы увидеть доступные ресурсы (CPU, memory) на каждой ноде.",{"name":1025,"text":1026},"Анализируйте манифест Pod","Откройте YAML-манифест Pod и проверьте разделы `resources.requests`, `nodeSelector`, `tolerations`, `affinity`. Убедитесь, что запросы реалистичны.","PT15M",[1029,1030,1031,1032,1033,1034,1035,1036,1037,1038],"k8s pod pending","kubernetes pod pending ошибка","pod pending состояние","как исправить pod pending","kubectl describe pod pending","k8s pod не планируется","pending pod reasons kubernetes","kubernetes pod pending ресурсы","minikube pod pending","k3s pod pending","ru_RU",{},true,"/errors/linux/k8s-pod-pending","general",[1045,1046,1047],"/errors/linux/k8s-pod-crashloopbackoff","/errors/linux/k8s-imagepullbackoff","/guides/linux/k8s-troubleshooting-pods","Ошибки Kubernetes",{"title":5,"description":997},"high","errors/linux/k8s-pod-pending","Эта статья объясняет, почему Pod не переходит из состояния Pending в Running, и предоставляет проверенные способы устранения.",[1054,1055,1056,1057,1058,1059,253,1060],"kubernetes","k8s","pod","pending","ошибки","linux","scheduler","error","jklyAMc51wr58eLVduZK19uIflFenuz7ziRNXNGF-BY",{"data":1064,"body":1065},{},{"type":1066,"children":1067},"root",[1068],{"type":1069,"tag":21,"props":1070,"children":1071},"element",{},[1072],{"type":335,"value":1004},{"data":1074,"body":1075},{},{"type":1066,"children":1076},[1077],{"type":1069,"tag":21,"props":1078,"children":1079},{},[1080,1082,1088],{"type":335,"value":1081},"Используйте команду ",{"type":1069,"tag":30,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":335,"value":1087},"kubectl describe pod \u003Cимя-пода>",{"type":335,"value":1089}," и посмотрите раздел 'Events'. Там будут указаны причины, по которым планировщик не может разместить Pod.",{"data":1091,"body":1092},{},{"type":1066,"children":1093},[1094],{"type":1069,"tag":21,"props":1095,"children":1096},{},[1097],{"type":335,"value":1010},{"data":1099,"body":1100},{},{"type":1066,"children":1101},[1102],{"type":1069,"tag":21,"props":1103,"children":1104},{},[1105],{"type":335,"value":1013},{"data":1107,"body":1108},{},{"type":1066,"children":1109},[1110],{"type":1069,"tag":21,"props":1111,"children":1112},{},[1113,1115,1121],{"type":335,"value":1114},"Выполните ",{"type":1069,"tag":30,"props":1116,"children":1118},{"className":1117},[],[1119],{"type":335,"value":1120},"kubectl get pods",{"type":335,"value":1122}," и найдите Pod в состоянии Pending. Запишите его имя и namespace.",{"data":1124,"body":1125},{},{"type":1066,"children":1126},[1127],{"type":1069,"tag":21,"props":1128,"children":1129},{},[1130,1132,1138],{"type":335,"value":1131},"Используйте ",{"type":1069,"tag":30,"props":1133,"children":1135},{"className":1134},[],[1136],{"type":335,"value":1137},"kubectl describe pod \u003Cимя-пода> -n \u003Cnamespace>",{"type":335,"value":1139}," и посмотрите на раздел 'Events' в выводе. Ищите сообщения от scheduler.",{"data":1141,"body":1142},{},{"type":1066,"children":1143},[1144],{"type":1069,"tag":21,"props":1145,"children":1146},{},[1147,1149,1155,1157,1163],{"type":335,"value":1148},"Запустите ",{"type":1069,"tag":30,"props":1150,"children":1152},{"className":1151},[],[1153],{"type":335,"value":1154},"kubectl describe nodes",{"type":335,"value":1156}," или ",{"type":1069,"tag":30,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":335,"value":1162},"kubectl top nodes",{"type":335,"value":1164}," чтобы увидеть доступные ресурсы (CPU, memory) на каждой ноде.",{"data":1166,"body":1167},{},{"type":1066,"children":1168},[1169],{"type":1069,"tag":21,"props":1170,"children":1171},{},[1172,1174,1179,1180,1185,1186,1192,1193,1198],{"type":335,"value":1173},"Откройте YAML-манифест Pod и проверьте разделы ",{"type":1069,"tag":30,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":335,"value":127},{"type":335,"value":171},{"type":1069,"tag":30,"props":1181,"children":1183},{"className":1182},[],[1184],{"type":335,"value":649},{"type":335,"value":171},{"type":1069,"tag":30,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":335,"value":1191},"tolerations",{"type":335,"value":171},{"type":1069,"tag":30,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":335,"value":732},{"type":335,"value":1199},". Убедитесь, что запросы реалистичны.",[1201,2502],{"id":1202,"title":1203,"appliesTo":1204,"author":11,"body":1207,"canonical":995,"code":43,"createdAt":2448,"description":2449,"difficulty":998,"draft":999,"estimatedTime":2450,"extension":1001,"faq":2451,"howToSteps":2464,"howToTotalTime":1027,"image":995,"keywords":2480,"locale":1039,"meta":2490,"navigation":1041,"path":1045,"platform":1059,"related":2491,"section":1048,"seo":2494,"severity":1050,"stem":2495,"summary":2496,"tags":2497,"twitterCreator":995,"twitterSite":995,"type":1061,"updatedAt":2448,"__hash__":2501},"content_ru/errors/linux/k8s-pod-crashloopbackoff.md","CrashLoopBackOff в Kubernetes: причины и способы исправления",[7,1205,1206],"Docker, containerd","kubelet",{"type":13,"value":1208,"toc":2438},[1209,1213,1219,1224,1230,1237,1239,1296,1300,1303,1481,1485,1488,1667,1671,1674,1877,1881,1884,2087,2091,2094,2326,2328,2428,2435],[16,1210,1212],{"id":1211},"что-означает-ошибка-crashloopbackoff","Что означает ошибка CrashLoopBackOff",[21,1214,1215,1218],{},[25,1216,1217],{},"CrashLoopBackOff"," — это состояние Kubernetes пода, когда контейнер внутри него постоянно завершается с ошибкой (exit code ≠ 0), а kubelet безуспешно пытается его перезапустить. После каждой неудачной попытки задержка перед следующим запуском экспоненциально увеличивается (10s, 20s, 40s и т.д.), что и отражено в названии состояния.",[21,1220,1221,1222,281],{},"Ошибка появляется в выводе ",[30,1223,1120],{},[38,1225,1228],{"className":1226,"code":1227,"language":335},[333],"NAME                     READY   STATUS             RESTARTS   AGE\nmy-app-5d89d7c8b9-xyz   0/1     CrashLoopBackOff   5          2m\n",[30,1229,1227],{"__ignoreMap":43},[21,1231,1232,1233,1236],{},"Это не ошибка самого Kubernetes, а индикатор того, что ",[25,1234,1235],{},"контейнер не может запуститься устойчиво",". Проблема всегда в конфигурации пода или в самом приложении.",[16,1238,108],{"id":107},[113,1240,1241,1247,1253,1266,1272,1278,1284,1290],{},[116,1242,1243,1246],{},[25,1244,1245],{},"Ошибка в приложении"," — приложение падает при старте (например, из-за неверных аргументов, отсутствия переменных окружения, ошибок в коде).",[116,1248,1249,1252],{},[25,1250,1251],{},"Нехватка ресурсов"," — контейнеру не хватает памяти (OOMKilled) или CPU, что приводит к аварийному завершению.",[116,1254,1255,1258,1259,1156,1262,1265],{},[25,1256,1257],{},"Неправильная команда запуска"," — в манифесте пода указаны некорректные ",[30,1260,1261],{},"command",[30,1263,1264],{},"args",", или отсутствует точка входа (ENTRYPOINT) в образе.",[116,1267,1268,1271],{},[25,1269,1270],{},"Проблемы с образом"," — несуществующий тег образа, ошибка аутентификации в приватном реестре, повреждённый образ.",[116,1273,1274,1277],{},[25,1275,1276],{},"Недоступные тома"," — том (PersistentVolumeClaim) не смounted, недоступен или имеет неправильные права.",[116,1279,1280,1283],{},[25,1281,1282],{},"Недостаток прав"," — контейнеру не хватает прав (SecurityContext, ServiceAccount) для доступа к ресурсам (например, к порту \u003C1024).",[116,1285,1286,1289],{},[25,1287,1288],{},"Конфликт портов"," — приложение пытается слушать порт, который уже занят другим процессом в контейнере или хосте.",[116,1291,1292,1295],{},[25,1293,1294],{},"Проблемы с инициализацией"," — init-контейнеры завершились с ошибкой, не предоставив необходимые ресурсы.",[16,1297,1299],{"id":1298},"способ-1-диагностика-через-логи-и-описание-пода","Способ 1: Диагностика через логи и описание пода",[21,1301,1302],{},"Первый и самый важный шаг — собрать информацию об ошибке.",[113,1304,1305,1332,1370,1430],{},[116,1306,1307,281,1310,1323,1325,1326,1328,1329,840],{},[25,1308,1309],{},"Узнайте имя пода",[38,1311,1313],{"className":40,"code":1312,"language":42,"meta":43,"style":43},"kubectl get pods\n",[30,1314,1315],{"__ignoreMap":43},[47,1316,1317,1319,1321],{"class":49,"line":50},[47,1318,253],{"class":53},[47,1320,61],{"class":57},[47,1322,64],{"class":57},[122,1324],{},"Найдите под с статусом ",[30,1327,1217],{},". Запишите его полное имя (например, ",[30,1330,1331],{},"my-app-5d89d7c8b9-xyz",[116,1333,1334,281,1337,1360,1362,1363,1366,1367,219],{},[25,1335,1336],{},"Просмотрите логи предыдущего экземпляра контейнера",[38,1338,1340],{"className":40,"code":1339,"language":42,"meta":43,"style":43},"kubectl logs \u003Cpod-name> --previous\n",[30,1341,1342],{"__ignoreMap":43},[47,1343,1344,1346,1349,1351,1353,1355,1357],{"class":49,"line":50},[47,1345,253],{"class":53},[47,1347,1348],{"class":57}," logs",[47,1350,299],{"class":264},[47,1352,302],{"class":57},[47,1354,306],{"class":305},[47,1356,309],{"class":264},[47,1358,1359],{"class":97}," --previous\n",[122,1361],{},"Ключ ",[30,1364,1365],{},"--previous"," показывает логи контейнера, который уже завершился. Если под многоконтейнерный, укажите имя контейнера: ",[30,1368,1369],{},"-c \u003Ccontainer-name>",[116,1371,1372,281,1375,1396,325,1398,1400,1401],{},[25,1373,1374],{},"Изучите события (Events) пода",[38,1376,1378],{"className":40,"code":1377,"language":42,"meta":43,"style":43},"kubectl describe pod \u003Cpod-name>\n",[30,1379,1380],{"__ignoreMap":43},[47,1381,1382,1384,1386,1388,1390,1392,1394],{"class":49,"line":50},[47,1383,253],{"class":53},[47,1385,293],{"class":57},[47,1387,296],{"class":57},[47,1389,299],{"class":264},[47,1391,302],{"class":57},[47,1393,306],{"class":305},[47,1395,322],{"class":264},[122,1397],{},[30,1399,328],{},". Частые ошибки:",[349,1402,1403,1409,1418,1424],{},[116,1404,1405,1408],{},[30,1406,1407],{},"OOMKilled"," — нехватка памяти.",[116,1410,1411,1156,1414,1417],{},[30,1412,1413],{},"Failed",[30,1415,1416],{},"ErrImagePull"," — проблемы с образом.",[116,1419,1420,1423],{},[30,1421,1422],{},"FailedMount"," — ошибка монтирования тома.",[116,1425,1426,1429],{},[30,1427,1428],{},"Exited"," с кодом — ошибка приложения.",[116,1431,1432,1435,1436,1439,1440,1469,1471,1472,1474,1475,1477,1478,840],{},[25,1433,1434],{},"Если приложение выводит логи в stdout/stderr",", они появятся в ",[30,1437,1438],{},"kubectl logs",". Если логи пишутся в файл внутри контейнера, подключитесь к упавшему контейнеру (если возможно):",[38,1441,1443],{"className":40,"code":1442,"language":42,"meta":43,"style":43},"kubectl exec -it \u003Cpod-name> -- /bin/sh\n",[30,1444,1445],{"__ignoreMap":43},[47,1446,1447,1449,1452,1455,1457,1459,1461,1463,1466],{"class":49,"line":50},[47,1448,253],{"class":53},[47,1450,1451],{"class":57}," exec",[47,1453,1454],{"class":97}," -it",[47,1456,299],{"class":264},[47,1458,302],{"class":57},[47,1460,306],{"class":305},[47,1462,309],{"class":264},[47,1464,1465],{"class":97}," --",[47,1467,1468],{"class":57}," /bin/sh\n",[122,1470],{},"Но при ",[30,1473,1217],{}," контейнер может быть недоступен для exec. В этом случае используйте ",[30,1476,1365],{}," для логов или временно измените манифест, чтобы контейнер не завершался (например, запустите ",[30,1479,1480],{},"sleep infinity",[16,1482,1484],{"id":1483},"способ-2-проверка-и-увеличение-ресурсов-памятьcpu","Способ 2: Проверка и увеличение ресурсов (память/CPU)",[21,1486,1487],{},"Частая причина — контейнеру не хватает памяти, и ядро завершает процесс (OOMKilled).",[113,1489,1490,1512,1621,1634],{},[116,1491,1492,281,1499,1505,1507,1508,1511],{},[25,1493,1494,1495,1498],{},"В ",[30,1496,1497],{},"kubectl describe pod \u003Cpod-name>"," найдите",[38,1500,1503],{"className":1501,"code":1502,"language":335},[333],"Limits:\n  memory:  256Mi\nRequests:\n  memory:  128Mi\n",[30,1504,1502],{"__ignoreMap":43},[122,1506],{},"Если ",[30,1509,1510],{},"memory"," в Limits слишком мало (например, 128Mi) для Java-приложения или базы данных, увеличьте.",[116,1513,1514,1517,1518,1602,1604,1605],{},[25,1515,1516],{},"Измените манифест пода"," (deployment/statefulset):",[38,1519,1521],{"className":517,"code":1520,"language":519,"meta":43,"style":43},"spec:\n  containers:\n  - name: my-app\n    resources:\n      limits:\n        memory: \"512Mi\"\n        cpu: \"500m\"\n      requests:\n        memory: \"256Mi\"\n        cpu: \"250m\"\n",[30,1522,1523,1529,1535,1546,1552,1559,1568,1577,1583,1593],{"__ignoreMap":43},[47,1524,1525,1527],{"class":49,"line":50},[47,1526,527],{"class":526},[47,1528,530],{"class":305},[47,1530,1531,1533],{"class":49,"line":67},[47,1532,535],{"class":526},[47,1534,530],{"class":305},[47,1536,1537,1539,1541,1543],{"class":49,"line":85},[47,1538,542],{"class":305},[47,1540,545],{"class":526},[47,1542,548],{"class":305},[47,1544,1545],{"class":57},"my-app\n",[47,1547,1548,1550],{"class":49,"line":554},[47,1549,568],{"class":526},[47,1551,530],{"class":305},[47,1553,1554,1557],{"class":49,"line":565},[47,1555,1556],{"class":526},"      limits",[47,1558,530],{"class":305},[47,1560,1561,1563,1565],{"class":49,"line":573},[47,1562,584],{"class":526},[47,1564,548],{"class":305},[47,1566,1567],{"class":57},"\"512Mi\"\n",[47,1569,1570,1572,1574],{"class":49,"line":581},[47,1571,599],{"class":526},[47,1573,548],{"class":305},[47,1575,1576],{"class":57},"\"500m\"\n",[47,1578,1579,1581],{"class":49,"line":596},[47,1580,576],{"class":526},[47,1582,530],{"class":305},[47,1584,1586,1588,1590],{"class":49,"line":1585},9,[47,1587,584],{"class":526},[47,1589,548],{"class":305},[47,1591,1592],{"class":57},"\"256Mi\"\n",[47,1594,1596,1598,1600],{"class":49,"line":1595},10,[47,1597,599],{"class":526},[47,1599,548],{"class":305},[47,1601,604],{"class":57},[122,1603],{},"Примените изменения:",[38,1606,1608],{"className":40,"code":1607,"language":42,"meta":43,"style":43},"kubectl apply -f deployment.yaml\n",[30,1609,1610],{"__ignoreMap":43},[47,1611,1612,1614,1616,1618],{"class":49,"line":50},[47,1613,253],{"class":53},[47,1615,748],{"class":57},[47,1617,751],{"class":97},[47,1619,1620],{"class":57}," deployment.yaml\n",[116,1622,1623,1626,1627,152,1630,1633],{},[25,1624,1625],{},"Если проблема в CPU",", увеличьте ",[30,1628,1629],{},"limits.cpu",[30,1631,1632],{},"requests.cpu",". Но учтите, что CPU-лимиты могут вызывать throttling, но не OOMKilled.",[116,1635,1636,1639,1640],{},[25,1637,1638],{},"Для диагностики"," можно временно убрать лимиты (не для продакшена!), чтобы проверить, исчезнет ли ошибка:",[38,1641,1643],{"className":517,"code":1642,"language":519,"meta":43,"style":43},"resources:\n  limits: {}\n  requests: {}\n",[30,1644,1645,1652,1660],{"__ignoreMap":43},[47,1646,1647,1650],{"class":49,"line":50},[47,1648,1649],{"class":526},"resources",[47,1651,530],{"class":305},[47,1653,1654,1657],{"class":49,"line":67},[47,1655,1656],{"class":526},"  limits",[47,1658,1659],{"class":305},": {}\n",[47,1661,1662,1665],{"class":49,"line":85},[47,1663,1664],{"class":526},"  requests",[47,1666,1659],{"class":305},[16,1668,1670],{"id":1669},"способ-3-проверка-команды-запуска-и-аргументов","Способ 3: Проверка команды запуска и аргументов",[21,1672,1673],{},"Если приложение требует конкретных аргументов или переменных окружения, а они не переданы, оно может упасть.",[113,1675,1676,1740,1756,1867],{},[116,1677,1678,281,1681,1737,1739],{},[25,1679,1680],{},"Проверьте, какая команда выполняется в контейнере",[38,1682,1684],{"className":40,"code":1683,"language":42,"meta":43,"style":43},"kubectl describe pod \u003Cpod-name> | grep -A5 \"Command:\"\nkubectl describe pod \u003Cpod-name> | grep -A5 \"Args:\"\n",[30,1685,1686,1712],{"__ignoreMap":43},[47,1687,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1709],{"class":49,"line":50},[47,1689,253],{"class":53},[47,1691,293],{"class":57},[47,1693,296],{"class":57},[47,1695,299],{"class":264},[47,1697,302],{"class":57},[47,1699,306],{"class":305},[47,1701,309],{"class":264},[47,1703,265],{"class":264},[47,1705,268],{"class":53},[47,1707,1708],{"class":97}," -A5",[47,1710,1711],{"class":57}," \"Command:\"\n",[47,1713,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734],{"class":49,"line":67},[47,1715,253],{"class":53},[47,1717,293],{"class":57},[47,1719,296],{"class":57},[47,1721,299],{"class":264},[47,1723,302],{"class":57},[47,1725,306],{"class":305},[47,1727,309],{"class":264},[47,1729,265],{"class":264},[47,1731,268],{"class":53},[47,1733,1708],{"class":97},[47,1735,1736],{"class":57}," \"Args:\"\n",[122,1738],{},"Если команда или аргументы неверны, контейнер завершится сразу.",[116,1741,1742,281,1745,1747,1748,1751,1752,1755],{},[25,1743,1744],{},"Пример проблемы",[122,1746],{},"\nВ Dockerfile указано ",[30,1749,1750],{},"ENTRYPOINT [\"java\", \"-jar\", \"app.jar\"]",", а в манифесте пода переопределён ",[30,1753,1754],{},"command: [\"python\"]"," — это вызовет ошибку.",[116,1757,1758,281,1761,1864,1866],{},[25,1759,1760],{},"Исправьте манифест",[38,1762,1764],{"className":517,"code":1763,"language":519,"meta":43,"style":43},"spec:\n  containers:\n  - name: my-app\n    image: my-image:latest\n    command: [\"java\"]          # опционально, если хотите переопределить ENTRYPOINT\n    args: [\"-jar\", \"app.jar\"] # опционально, если хотите переопределить CMD\n    env:\n    - name: DB_HOST\n      value: \"postgres\"\n",[30,1765,1766,1772,1778,1788,1797,1814,1835,1842,1854],{"__ignoreMap":43},[47,1767,1768,1770],{"class":49,"line":50},[47,1769,527],{"class":526},[47,1771,530],{"class":305},[47,1773,1774,1776],{"class":49,"line":67},[47,1775,535],{"class":526},[47,1777,530],{"class":305},[47,1779,1780,1782,1784,1786],{"class":49,"line":85},[47,1781,542],{"class":305},[47,1783,545],{"class":526},[47,1785,548],{"class":305},[47,1787,1545],{"class":57},[47,1789,1790,1792,1794],{"class":49,"line":554},[47,1791,557],{"class":526},[47,1793,548],{"class":305},[47,1795,1796],{"class":57},"my-image:latest\n",[47,1798,1799,1802,1805,1808,1811],{"class":49,"line":565},[47,1800,1801],{"class":526},"    command",[47,1803,1804],{"class":305},": [",[47,1806,1807],{"class":57},"\"java\"",[47,1809,1810],{"class":305},"]          ",[47,1812,1813],{"class":592},"# опционально, если хотите переопределить ENTRYPOINT\n",[47,1815,1816,1819,1821,1824,1826,1829,1832],{"class":49,"line":573},[47,1817,1818],{"class":526},"    args",[47,1820,1804],{"class":305},[47,1822,1823],{"class":57},"\"-jar\"",[47,1825,171],{"class":305},[47,1827,1828],{"class":57},"\"app.jar\"",[47,1830,1831],{"class":305},"] ",[47,1833,1834],{"class":592},"# опционально, если хотите переопределить CMD\n",[47,1836,1837,1840],{"class":49,"line":581},[47,1838,1839],{"class":526},"    env",[47,1841,530],{"class":305},[47,1843,1844,1847,1849,1851],{"class":49,"line":596},[47,1845,1846],{"class":305},"    - ",[47,1848,545],{"class":526},[47,1850,548],{"class":305},[47,1852,1853],{"class":57},"DB_HOST\n",[47,1855,1856,1859,1861],{"class":49,"line":1585},[47,1857,1858],{"class":526},"      value",[47,1860,548],{"class":305},[47,1862,1863],{"class":57},"\"postgres\"\n",[122,1865],{},"Убедитесь, что команда существует в образе (проверьте Dockerfile).",[116,1868,1869,1872,1873,1876],{},[25,1870,1871],{},"Если приложение зависит от переменных окружения",", добавьте все необходимые в секции ",[30,1874,1875],{},"env",". Проверьте, что нет опечаток.",[16,1878,1880],{"id":1879},"способ-4-проверка-образа-и-его-доступности","Способ 4: Проверка образа и его доступности",[21,1882,1883],{},"Проблемы с образом — одна из самых частых причин CrashLoopBackOff.",[113,1885,1886,1930,1951,2074],{},[116,1887,1888,281,1891,1922,1924,1925,1156,1927,219],{},[25,1889,1890],{},"Проверьте, что образ существует и доступен",[38,1892,1894],{"className":40,"code":1893,"language":42,"meta":43,"style":43},"kubectl describe pod \u003Cpod-name> | grep -i \"image\"\n",[30,1895,1896],{"__ignoreMap":43},[47,1897,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1919],{"class":49,"line":50},[47,1899,253],{"class":53},[47,1901,293],{"class":57},[47,1903,296],{"class":57},[47,1905,299],{"class":264},[47,1907,302],{"class":57},[47,1909,306],{"class":305},[47,1911,309],{"class":264},[47,1913,265],{"class":264},[47,1915,268],{"class":53},[47,1917,1918],{"class":97}," -i",[47,1920,1921],{"class":57}," \"image\"\n",[122,1923],{},"Ищите события ",[30,1926,1416],{},[30,1928,1929],{},"ImagePullBackOff",[116,1931,1932,281,1935],{},[25,1933,1934],{},"Убедитесь, что тег образа корректен",[349,1936,1937,1944],{},[116,1938,1939,1940,1943],{},"Не используйте ",[30,1941,1942],{},"latest"," в продакшене (он может меняться).",[116,1945,1946,1947,1950],{},"Проверьте, что образ есть в реестре: ",[30,1948,1949],{},"docker pull \u003Cimage:tag>"," (если у вас есть доступ).",[116,1952,1953,1956,1957,281,1960,1974,1976,1977,2042,2044,2045],{},[25,1954,1955],{},"Если образ в приватном реестре",", убедитесь, что создан ",[30,1958,1959],{},"imagePullSecret",[38,1961,1963],{"className":40,"code":1962,"language":42,"meta":43,"style":43},"kubectl get secret\n",[30,1964,1965],{"__ignoreMap":43},[47,1966,1967,1969,1971],{"class":49,"line":50},[47,1968,253],{"class":53},[47,1970,61],{"class":57},[47,1972,1973],{"class":57}," secret\n",[122,1975],{},"Если секрета нет, создайте:",[38,1978,1980],{"className":40,"code":1979,"language":42,"meta":43,"style":43},"kubectl create secret docker-registry regcred \\\n  --docker-server=\u003Cregistry-server> \\\n  --docker-username=\u003Cusername> \\\n  --docker-password=\u003Cpassword>\n",[30,1981,1982,2001,2016,2030],{"__ignoreMap":43},[47,1983,1984,1986,1989,1992,1995,1998],{"class":49,"line":50},[47,1985,253],{"class":53},[47,1987,1988],{"class":57}," create",[47,1990,1991],{"class":57}," secret",[47,1993,1994],{"class":57}," docker-registry",[47,1996,1997],{"class":57}," regcred",[47,1999,2000],{"class":97}," \\\n",[47,2002,2003,2006,2009,2012,2014],{"class":49,"line":67},[47,2004,2005],{"class":97},"  --docker-server=",[47,2007,2008],{"class":264},"\u003C",[47,2010,2011],{"class":97},"registry-server",[47,2013,309],{"class":264},[47,2015,2000],{"class":97},[47,2017,2018,2021,2023,2026,2028],{"class":49,"line":85},[47,2019,2020],{"class":97},"  --docker-username=",[47,2022,2008],{"class":264},[47,2024,2025],{"class":97},"username",[47,2027,309],{"class":264},[47,2029,2000],{"class":97},[47,2031,2032,2035,2037,2040],{"class":49,"line":554},[47,2033,2034],{"class":97},"  --docker-password=",[47,2036,2008],{"class":264},[47,2038,2039],{"class":97},"password",[47,2041,322],{"class":264},[122,2043],{},"И добавьте в под/деплоймент:",[38,2046,2048],{"className":517,"code":2047,"language":519,"meta":43,"style":43},"spec:\n  imagePullSecrets:\n  - name: regcred\n",[30,2049,2050,2056,2063],{"__ignoreMap":43},[47,2051,2052,2054],{"class":49,"line":50},[47,2053,527],{"class":526},[47,2055,530],{"class":305},[47,2057,2058,2061],{"class":49,"line":67},[47,2059,2060],{"class":526},"  imagePullSecrets",[47,2062,530],{"class":305},[47,2064,2065,2067,2069,2071],{"class":49,"line":85},[47,2066,542],{"class":305},[47,2068,545],{"class":526},[47,2070,548],{"class":305},[47,2072,2073],{"class":57},"regcred\n",[116,2075,2076,2079,2080,2083,2084,219],{},[25,2077,2078],{},"Проверьте, что образ совместим с архитектурой нод",". Например, образ для ",[30,2081,2082],{},"amd64"," не запустится на ноде ",[30,2085,2086],{},"arm64",[16,2088,2090],{"id":2089},"способ-5-проверка-томов-и-securitycontext","Способ 5: Проверка томов и SecurityContext",[21,2092,2093],{},"Если контейнеру не удаётся смонтировать том или получить доступ к ресурсу из-за прав, он упадёт.",[113,2095,2096,2142,2164,2225],{},[116,2097,2098,281,2101,2132,2134,2135,1156,2138,2141],{},[25,2099,2100],{},"Проверьте события FailedMount",[38,2102,2104],{"className":40,"code":2103,"language":42,"meta":43,"style":43},"kubectl describe pod \u003Cpod-name> | grep -A10 \"Events\"\n",[30,2105,2106],{"__ignoreMap":43},[47,2107,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2129],{"class":49,"line":50},[47,2109,253],{"class":53},[47,2111,293],{"class":57},[47,2113,296],{"class":57},[47,2115,299],{"class":264},[47,2117,302],{"class":57},[47,2119,306],{"class":305},[47,2121,309],{"class":264},[47,2123,265],{"class":264},[47,2125,268],{"class":53},[47,2127,2128],{"class":97}," -A10",[47,2130,2131],{"class":57}," \"Events\"\n",[122,2133],{},"Ошибки типа ",[30,2136,2137],{},"MountVolume.SetUp",[30,2139,2140],{},"failed to mount volumes"," указывают на проблемы с PVC или конфигурацией тома.",[116,2143,2144,281,2150],{},[25,2145,2146,2147],{},"Убедитесь, что PVC существует и в статусе ",[30,2148,2149],{},"Bound",[38,2151,2153],{"className":40,"code":2152,"language":42,"meta":43,"style":43},"kubectl get pvc\n",[30,2154,2155],{"__ignoreMap":43},[47,2156,2157,2159,2161],{"class":49,"line":50},[47,2158,253],{"class":53},[47,2160,61],{"class":57},[47,2162,2163],{"class":57}," pvc\n",[116,2165,2166,281,2169],{},[25,2167,2168],{},"Проверьте SecurityContext",[349,2170,2171,2180,2218],{},[116,2172,2173,2174,2176,2177,219],{},"Если контейнер запускается от ",[30,2175,1066],{}," (UID 0), но приложение требует не-привилегированного пользователя, настройте ",[30,2178,2179],{},"runAsUser",[116,2181,2182,2183,530,2186],{},"Если нужно слушать порт \u003C1024, требуется ",[30,2184,2185],{},"CAP_NET_BIND_SERVICE",[38,2187,2189],{"className":517,"code":2188,"language":519,"meta":43,"style":43},"securityContext:\n  capabilities:\n    add: [\"NET_BIND_SERVICE\"]\n",[30,2190,2191,2198,2205],{"__ignoreMap":43},[47,2192,2193,2196],{"class":49,"line":50},[47,2194,2195],{"class":526},"securityContext",[47,2197,530],{"class":305},[47,2199,2200,2203],{"class":49,"line":67},[47,2201,2202],{"class":526},"  capabilities",[47,2204,530],{"class":305},[47,2206,2207,2210,2212,2215],{"class":49,"line":85},[47,2208,2209],{"class":526},"    add",[47,2211,1804],{"class":305},[47,2213,2214],{"class":57},"\"NET_BIND_SERVICE\"",[47,2216,2217],{"class":305},"]\n",[116,2219,2220,2221,2224],{},"Проверьте, что ",[30,2222,2223],{},"fsGroup"," установлен правильно для доступа к томам.",[116,2226,2227,281,2230,2319,2321,2322,2325],{},[25,2228,2229],{},"Пример исправления для тома",[38,2231,2233],{"className":517,"code":2232,"language":519,"meta":43,"style":43},"spec:\n  containers:\n  - name: my-app\n    volumeMounts:\n    - name: data\n      mountPath: /data\n  volumes:\n  - name: data\n    persistentVolumeClaim:\n      claimName: my-pvc\n",[30,2234,2235,2241,2247,2257,2264,2275,2285,2292,2302,2309],{"__ignoreMap":43},[47,2236,2237,2239],{"class":49,"line":50},[47,2238,527],{"class":526},[47,2240,530],{"class":305},[47,2242,2243,2245],{"class":49,"line":67},[47,2244,535],{"class":526},[47,2246,530],{"class":305},[47,2248,2249,2251,2253,2255],{"class":49,"line":85},[47,2250,542],{"class":305},[47,2252,545],{"class":526},[47,2254,548],{"class":305},[47,2256,1545],{"class":57},[47,2258,2259,2262],{"class":49,"line":554},[47,2260,2261],{"class":526},"    volumeMounts",[47,2263,530],{"class":305},[47,2265,2266,2268,2270,2272],{"class":49,"line":565},[47,2267,1846],{"class":305},[47,2269,545],{"class":526},[47,2271,548],{"class":305},[47,2273,2274],{"class":57},"data\n",[47,2276,2277,2280,2282],{"class":49,"line":573},[47,2278,2279],{"class":526},"      mountPath",[47,2281,548],{"class":305},[47,2283,2284],{"class":57},"/data\n",[47,2286,2287,2290],{"class":49,"line":581},[47,2288,2289],{"class":526},"  volumes",[47,2291,530],{"class":305},[47,2293,2294,2296,2298,2300],{"class":49,"line":596},[47,2295,542],{"class":305},[47,2297,545],{"class":526},[47,2299,548],{"class":305},[47,2301,2274],{"class":57},[47,2303,2304,2307],{"class":49,"line":1585},[47,2305,2306],{"class":526},"    persistentVolumeClaim",[47,2308,530],{"class":305},[47,2310,2311,2314,2316],{"class":49,"line":1595},[47,2312,2313],{"class":526},"      claimName",[47,2315,548],{"class":305},[47,2317,2318],{"class":57},"my-pvc\n",[122,2320],{},"Убедитесь, что ",[30,2323,2324],{},"my-pvc"," существует и имеет достаточный размер.",[16,2327,926],{"id":925},[113,2329,2330,2377,2383,2393,2399,2405,2414],{},[116,2331,2332,2335,2336,2374,2376],{},[25,2333,2334],{},"Тестируйте образ локально"," перед деплоем:",[38,2337,2339],{"className":40,"code":2338,"language":42,"meta":43,"style":43},"docker run --rm -it \u003Cimage:tag> \u003Ccommand>\n",[30,2340,2341],{"__ignoreMap":43},[47,2342,2343,2346,2349,2352,2354,2356,2359,2362,2364,2366,2369,2372],{"class":49,"line":50},[47,2344,2345],{"class":53},"docker",[47,2347,2348],{"class":57}," run",[47,2350,2351],{"class":97}," --rm",[47,2353,1454],{"class":97},[47,2355,299],{"class":264},[47,2357,2358],{"class":57},"image:ta",[47,2360,2361],{"class":305},"g",[47,2363,309],{"class":264},[47,2365,299],{"class":264},[47,2367,2368],{"class":57},"comman",[47,2370,2371],{"class":305},"d",[47,2373,322],{"class":264},[122,2375],{},"Убедитесь, что контейнер запускается и не падает.",[116,2378,2379,2382],{},[25,2380,2381],{},"Указывайте явные команды и аргументы"," в манифесте, даже если они совпадают с Dockerfile. Это исключит неявные зависимости.",[116,2384,2385,2388,2389,2392],{},[25,2386,2387],{},"Настройвайте разумные лимиты ресурсов"," на основе мониторинга (например, через ",[30,2390,2391],{},"kubectl top pod","). Начинайте с запасом 20-30%.",[116,2394,2395,2398],{},[25,2396,2397],{},"Используйте readiness/liveness probes"," — они не предотвратят CrashLoopBackOff, но помогут отличить проблемы запуска от проблем работоспособности.",[116,2400,2401,2404],{},[25,2402,2403],{},"Включайте логирование в stdout/stderr"," и собирайте их через DaemonSet (Fluentd, Filebeat) — это упростит диагностику.",[116,2406,2407,2413],{},[25,2408,2409,2410],{},"Проверяйте манифесты через ",[30,2411,2412],{},"kubectl apply --dry-run=client"," перед применением.",[116,2415,2416,2419,2420,2423,2424,2427],{},[25,2417,2418],{},"Для критичных приложений"," рассмотрите использование ",[30,2421,2422],{},"restartPolicy: OnFailure"," (для Job) или настройку ",[30,2425,2426],{},"backoffLimit"," в Job, чтобы ограничить число перезапусков.",[367,2429,2430],{},[21,2431,371,2432,2434],{},[25,2433,374],{},": Если приложение падает только в Kubernetes, но работает локально, сравнивайте окружение: переменные, тома, сеть, архитектуру ноды. Часто проблема в различиях между Docker run и Kubernetes pod.",[980,2436,2437],{},"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 .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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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":43,"searchDepth":67,"depth":67,"links":2439},[2440,2441,2442,2443,2444,2445,2446,2447],{"id":1211,"depth":67,"text":1212},{"id":107,"depth":67,"text":108},{"id":1298,"depth":67,"text":1299},{"id":1483,"depth":67,"text":1484},{"id":1669,"depth":67,"text":1670},{"id":1879,"depth":67,"text":1880},{"id":2089,"depth":67,"text":2090},{"id":925,"depth":67,"text":926},"2026-02-17 16:30:14","Подробное руководство по устранению ошибки CrashLoopBackOff в Kubernetes. Диагностика, проверка логов и ресурсов, настройка пода. Решение за 10-15 минут!","10-15 мин",[2452,2455,2458,2461],{"question":2453,"answer":2454},"Что означает CrashLoopBackOff в Kubernetes?","CrashLoopBackOff — состояние пода, когда контейнер внутри него аварийно завершается, а kubelet повторяет попытки запуска с экспоненциальной задержкой. Показатель серьёзной проблемы в контейнере.",{"question":2456,"answer":2457},"Как посмотреть логи пода в CrashLoopBackOff?","Используйте `kubectl logs \u003Cpod-name> --previous` для логов предыдущего экземпляра контейнера или `kubectl logs \u003Cpod-name> -c \u003Ccontainer-name> --previous` для многоконтейнерных подов.",{"question":2459,"answer":2460},"Можно ли отключить автоматические перезапуски при CrashLoopBackOff?","Да, установите `restartPolicy: Never` в spec пода, но это лишь скроет симптом. Лучше исправить первопричину падения контейнера, иначе приложение не будет работать.",{"question":2462,"answer":2463},"Частые причины CrashLoopBackOff в Kubernetes?","Основные причины: ошибки в приложении, нехватка памяти/CPU, неправильная команда запуска (CMD/ENTRYPOINT), отсутствие файлов/томов, проблемы с правами (SecurityContext), недоступность образа.",[2465,2468,2471,2474,2477],{"name":2466,"text":2467},"Получите имя пода и проверьте его статус","Выполните `kubectl get pods` и найдите под в состоянии `CrashLoopBackOff`. Запомните его полное имя.",{"name":2469,"text":2470},"Просмотрите логи контейнера","Используйте `kubectl logs \u003Cpod-name> --previous`, чтобы увидеть логи упавшего экземпляра. Для многоконтейнерных подов укажите `-c \u003Ccontainer-name>`.",{"name":2472,"text":2473},"Проанализируйте описание пода","Запустите `kubectl describe pod \u003Cpod-name>` и изучите раздел `Events` на наличие ошибок (OOMKilled, ImagePullBackOff, FailedMount).",{"name":2475,"text":2476},"Проверьте ресурсы и команды запуска","В `kubectl describe pod` найдите `Limits` и `Requests`. Убедитесь, что памяти/CPU достаточно. Проверьте `Command` и `Args` в манифесте пода.",{"name":2478,"text":2479},"Увеличьте ресурсы или исправьте конфигурацию","Если причина в нехватке памяти, увеличьте `limits.memory`. Если ошибка в команде запуска — исправьте `command` или `args` в манифесте и примените `kubectl apply -f \u003Cfile>`.",[2481,2482,2483,2484,2485,2486,2487,2488,2489],"CrashLoopBackOff Kubernetes","ошибка CrashLoopBackOff","под в CrashLoopBackOff","Kubernetes под перезапускается","как исправить CrashLoopBackOff","CrashLoopBackOff причины","Kubernetes CrashLoopBackOff решение","контейнер постоянно завершается","kubectl logs CrashLoopBackOff",{},[1042,2492,2493],"/guides/linux/k8s-debug-pod","/errors/linux/docker-container-exited",{"title":1203,"description":2449},"errors/linux/k8s-pod-crashloopbackoff","Статья объясняет, что означает состояние CrashLoopBackOff в Kubernetes, и предоставляет пошаговые инструкции по диагностике и исправлению проблемы с постоянными перезапусками пода.",[2498,1217,1055,2499,2500,1059,1056],"Kubernetes","контейнер","ошибка","oGRdCdy_uJEdNla5mtSspRW7zDtE6j148o1zjVtqsAw",{"id":2503,"title":2504,"appliesTo":2505,"author":11,"body":2508,"canonical":995,"code":995,"createdAt":3457,"description":3458,"difficulty":998,"draft":999,"estimatedTime":3459,"extension":1001,"faq":3460,"howToSteps":3473,"howToTotalTime":3492,"image":995,"keywords":3493,"locale":1039,"meta":3501,"navigation":1041,"path":1047,"platform":1059,"related":3502,"section":3506,"seo":3507,"severity":995,"stem":3508,"summary":3509,"tags":3510,"twitterCreator":995,"twitterSite":995,"type":3515,"updatedAt":3457,"__hash__":3516},"content_ru/guides/linux/k8s-troubleshooting-pods.md","Диагностика и решение проблем с подами Kubernetes",[7,2506,2507],"kubectl 1.20+","Linux (Ubuntu 20.04+, CentOS 8+)",{"type":13,"value":2509,"toc":3443},[2510,2514,2520,2524,2527,2548,2552,2556,2559,2609,2616,2648,2651,2655,2666,2696,2701,2782,2786,2792,2944,2947,2949,2953,2968,3060,3074,3078,3081,3212,3219,3223,3226,3302,3306,3309,3343,3364,3368,3440],[16,2511,2513],{"id":2512},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,2515,2516,2517,2519],{},"Поды (Pods) — это базовые и самые часто используемые объекты в Kubernetes. Однако они могут перестать работать по множеству причин: от нехватки ресурсов до ошибок в конфигурации или самом приложении. Системная диагностика с помощью ",[30,2518,253],{}," позволяет быстро локализовать проблему, а не гадать или пересоздавать ресурсы вслепую. После выполнения этого гайда вы сможете самостоятельно выявлять и исправлять большинство типичных проблем с подами.",[16,2521,2523],{"id":2522},"требования-подготовка","Требования / Подготовка",[21,2525,2526],{},"Перед началом убедитесь, что у вас есть:",[113,2528,2529,2536,2542,2545],{},[116,2530,2531,2532,2535],{},"Доступ к кластеру Kubernetes с правами на просмотр подов (обычно роль ",[30,2533,2534],{},"view"," или выше).",[116,2537,2538,2539,2541],{},"Установленный и настроенный клиент ",[30,2540,253],{}," (версия, совместимая с вашим кластером).",[116,2543,2544],{},"Базовое понимание структуры пода и его компонентов (контейнеры, Init Containers, тома).",[116,2546,2547],{},"Название проблемного пода и его namespace (если не default).",[16,2549,2551],{"id":2550},"пошаговая-инструкция","Пошаговая инструкция",[225,2553,2555],{"id":2554},"шаг-1-проверьте-общий-статус-пода-и-кластера","Шаг 1: Проверьте общий статус пода и кластера",[21,2557,2558],{},"Первым делом убедитесь, что pod существует и посмотрите на его текущее состояние.",[38,2560,2562],{"className":40,"code":2561,"language":42,"meta":43,"style":43},"# Показать все поды во всех namespace (или укажите -n \u003Cnamespace>)\nkubectl get pods --all-namespaces\n\n# Если знаете namespace, посмотрите только в нём\nkubectl get pods -n \u003Cyour-namespace>\n",[30,2563,2564,2569,2580,2585,2590],{"__ignoreMap":43},[47,2565,2566],{"class":49,"line":50},[47,2567,2568],{"class":592},"# Показать все поды во всех namespace (или укажите -n \u003Cnamespace>)\n",[47,2570,2571,2573,2575,2577],{"class":49,"line":67},[47,2572,253],{"class":53},[47,2574,61],{"class":57},[47,2576,258],{"class":57},[47,2578,2579],{"class":97}," --all-namespaces\n",[47,2581,2582],{"class":49,"line":85},[47,2583,2584],{"emptyLinePlaceholder":1041},"\n",[47,2586,2587],{"class":49,"line":554},[47,2588,2589],{"class":592},"# Если знаете namespace, посмотрите только в нём\n",[47,2591,2592,2594,2596,2598,2600,2602,2605,2607],{"class":49,"line":565},[47,2593,253],{"class":53},[47,2595,61],{"class":57},[47,2597,258],{"class":57},[47,2599,312],{"class":97},[47,2601,299],{"class":264},[47,2603,2604],{"class":57},"your-namespac",[47,2606,306],{"class":305},[47,2608,322],{"class":264},[21,2610,2611,2612,2615],{},"Обратите внимание на столбец ",[30,2613,2614],{},"STATUS",". Критические состояния:",[349,2617,2618,2623,2632,2639],{},[116,2619,2620,2622],{},[30,2621,27],{}," — pod не был запланирован на ноду.",[116,2624,2625,2627,2628,2631],{},[30,2626,1217],{}," / ",[30,2629,2630],{},"Error"," — контейнер(ы) завершаются с ошибкой.",[116,2633,2634,2627,2636,2638],{},[30,2635,1929],{},[30,2637,1416],{}," — не удалось загрузить образ.",[116,2640,2641,2644,2645,840],{},[30,2642,2643],{},"Terminating"," — pod не может быть завершен (часто из-за ",[30,2646,2647],{},"finalizers",[21,2649,2650],{},"Если pod отсутствует в списке, возможно, он был удалён или вы смотрите в не том namespace.",[225,2652,2654],{"id":2653},"шаг-2-изучите-подробные-события-и-конфигурацию-пода","Шаг 2: Изучите подробные события и конфигурацию пода",[21,2656,2657,2658,2661,2662,2665],{},"Команда ",[30,2659,2660],{},"describe"," — ваш основной инструмент для диагностики. Она выводит всю метаинформацию о поде и, что самое важное, ",[25,2663,2664],{},"события (Events)",", которые часто содержать ключ к разгадке.",[38,2667,2668],{"className":40,"code":284,"language":42,"meta":43,"style":43},[30,2669,2670],{"__ignoreMap":43},[47,2671,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694],{"class":49,"line":50},[47,2673,253],{"class":53},[47,2675,293],{"class":57},[47,2677,296],{"class":57},[47,2679,299],{"class":264},[47,2681,302],{"class":57},[47,2683,306],{"class":305},[47,2685,309],{"class":264},[47,2687,312],{"class":97},[47,2689,299],{"class":264},[47,2691,317],{"class":57},[47,2693,306],{"class":305},[47,2695,322],{"class":264},[21,2697,2698],{},[25,2699,2700],{},"На что смотреть в выводе:",[349,2702,2703,2723,2750,2773],{},[116,2704,2705,2708,2709,1156,2712,2714,2715,171,2718,171,2720,219],{},[25,2706,2707],{},"Events:"," Последние события (обычно в конце вывода). Ищите сообщения с префиксами ",[30,2710,2711],{},"Warning",[30,2713,1413],{},". Например: ",[30,2716,2717],{},"Failed to pull image",[30,2719,388],{},[30,2721,2722],{},"NodeAffinity",[116,2724,2725,2728,2729,171,2732,2735,2736,2739,2740,2742,2743,2746,2747,840],{},[25,2726,2727],{},"Containers:"," Для каждого контейнера проверьте ",[30,2730,2731],{},"Ready",[30,2733,2734],{},"State"," (Waiting/Running/Terminated) и ",[30,2737,2738],{},"Last State",". В ",[30,2741,2734],{}," будет указана причина (",[30,2744,2745],{},"Reason",") и код выхода (",[30,2748,2749],{},"Exit Code",[116,2751,2752,2755,2756,171,2759,171,2762,2765,2766,2768,2769,2772],{},[25,2753,2754],{},"Conditions:"," Условия, такие как ",[30,2757,2758],{},"PodScheduled",[30,2760,2761],{},"Initialized",[30,2763,2764],{},"ContainersReady",". Если ",[30,2767,2758],{}," имеет статус ",[30,2770,2771],{},"False",", проблема в планировщике.",[116,2774,2775,2778,2779,840],{},[25,2776,2777],{},"Volumes:"," Убедитесь, что тома успешно подключены (",[30,2780,2781],{},"Mounted",[225,2783,2785],{"id":2784},"шаг-3-проанализируйте-логи-контейнеров","Шаг 3: Проанализируйте логи контейнеров",[21,2787,2788,2789,219],{},"Логи приложения — прямой источник информации о внутренних ошибках. Используйте команду ",[30,2790,2791],{},"logs",[38,2793,2795],{"className":40,"code":2794,"language":42,"meta":43,"style":43},"# Логи стандартного (первого) контейнера в поде\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",[30,2796,2797,2802,2826,2830,2835,2871,2875,2880,2907,2911,2916],{"__ignoreMap":43},[47,2798,2799],{"class":49,"line":50},[47,2800,2801],{"class":592},"# Логи стандартного (первого) контейнера в поде\n",[47,2803,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824],{"class":49,"line":67},[47,2805,253],{"class":53},[47,2807,1348],{"class":57},[47,2809,299],{"class":264},[47,2811,302],{"class":57},[47,2813,306],{"class":305},[47,2815,309],{"class":264},[47,2817,312],{"class":97},[47,2819,299],{"class":264},[47,2821,317],{"class":57},[47,2823,306],{"class":305},[47,2825,322],{"class":264},[47,2827,2828],{"class":49,"line":85},[47,2829,2584],{"emptyLinePlaceholder":1041},[47,2831,2832],{"class":49,"line":554},[47,2833,2834],{"class":592},"# Логи конкретного контейнера в мультиконтейнерном поде\n",[47,2836,2837,2839,2841,2843,2845,2847,2849,2852,2854,2857,2859,2861,2863,2865,2867,2869],{"class":49,"line":565},[47,2838,253],{"class":53},[47,2840,1348],{"class":57},[47,2842,299],{"class":264},[47,2844,302],{"class":57},[47,2846,306],{"class":305},[47,2848,309],{"class":264},[47,2850,2851],{"class":97}," -c",[47,2853,299],{"class":264},[47,2855,2856],{"class":57},"container-nam",[47,2858,306],{"class":305},[47,2860,309],{"class":264},[47,2862,312],{"class":97},[47,2864,299],{"class":264},[47,2866,317],{"class":57},[47,2868,306],{"class":305},[47,2870,322],{"class":264},[47,2872,2873],{"class":49,"line":573},[47,2874,2584],{"emptyLinePlaceholder":1041},[47,2876,2877],{"class":49,"line":581},[47,2878,2879],{"class":592},"# Если pod постоянно перезапускается, посмотрите логи предыдущего экземпляра\n",[47,2881,2882,2884,2886,2888,2890,2892,2894,2897,2899,2901,2903,2905],{"class":49,"line":596},[47,2883,253],{"class":53},[47,2885,1348],{"class":57},[47,2887,299],{"class":264},[47,2889,302],{"class":57},[47,2891,306],{"class":305},[47,2893,309],{"class":264},[47,2895,2896],{"class":97}," --previous",[47,2898,312],{"class":97},[47,2900,299],{"class":264},[47,2902,317],{"class":57},[47,2904,306],{"class":305},[47,2906,322],{"class":264},[47,2908,2909],{"class":49,"line":1585},[47,2910,2584],{"emptyLinePlaceholder":1041},[47,2912,2913],{"class":49,"line":1595},[47,2914,2915],{"class":592},"# Логи за последние 10 минут (если поддерживается)\n",[47,2917,2919,2921,2923,2925,2927,2929,2931,2934,2936,2938,2940,2942],{"class":49,"line":2918},11,[47,2920,253],{"class":53},[47,2922,1348],{"class":57},[47,2924,299],{"class":264},[47,2926,302],{"class":57},[47,2928,306],{"class":305},[47,2930,309],{"class":264},[47,2932,2933],{"class":97}," --since=10m",[47,2935,312],{"class":97},[47,2937,299],{"class":264},[47,2939,317],{"class":57},[47,2941,306],{"class":305},[47,2943,322],{"class":264},[21,2945,2946],{},"Если вывод пустой, возможно, контейнер не запускается до стадии записи в stdout/stderr (например, падает сразу после старта). В таком случае полагайтесь на шаг 2 (события и состояние).",[377,2948],{},[225,2950,2952],{"id":2951},"шаг-4-проверьте-использование-ресурсов-cpumemory","Шаг 4: Проверьте использование ресурсов (CPU/Memory)",[21,2954,2955,2956,1156,2958,2960,2961,2963,2964,2967],{},"Частая причина ",[30,2957,27],{},[30,2959,1407],{}," — нехватка вычислительных ресурсов. Сначала проверьте запросы (",[30,2962,940],{},") и лимиты (",[30,2965,2966],{},"limits",") в манифесте пода. Затем сравните с фактическим потреблением и доступными ресурсами на нодах.",[38,2969,2971],{"className":40,"code":2970,"language":42,"meta":43,"style":43},"# Посмотреть запросы/лимиты ресурсов для пода (если они заданы)\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",[30,2972,2973,2978,3016,3020,3025,3043,3047,3052],{"__ignoreMap":43},[47,2974,2975],{"class":49,"line":50},[47,2976,2977],{"class":592},"# Посмотреть запросы/лимиты ресурсов для пода (если они заданы)\n",[47,2979,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3013],{"class":49,"line":67},[47,2981,253],{"class":53},[47,2983,293],{"class":57},[47,2985,296],{"class":57},[47,2987,299],{"class":264},[47,2989,302],{"class":57},[47,2991,306],{"class":305},[47,2993,309],{"class":264},[47,2995,312],{"class":97},[47,2997,299],{"class":264},[47,2999,317],{"class":57},[47,3001,306],{"class":305},[47,3003,309],{"class":264},[47,3005,265],{"class":264},[47,3007,268],{"class":53},[47,3009,1708],{"class":97},[47,3011,3012],{"class":97}," -B5",[47,3014,3015],{"class":57}," \"Resources\"\n",[47,3017,3018],{"class":49,"line":85},[47,3019,2584],{"emptyLinePlaceholder":1041},[47,3021,3022],{"class":49,"line":554},[47,3023,3024],{"class":592},"# Проверить текущее потребление ресурсов всеми подами в namespace\n",[47,3026,3027,3029,3031,3033,3035,3037,3039,3041],{"class":49,"line":565},[47,3028,253],{"class":53},[47,3030,406],{"class":57},[47,3032,258],{"class":57},[47,3034,312],{"class":97},[47,3036,299],{"class":264},[47,3038,317],{"class":57},[47,3040,306],{"class":305},[47,3042,322],{"class":264},[47,3044,3045],{"class":49,"line":573},[47,3046,2584],{"emptyLinePlaceholder":1041},[47,3048,3049],{"class":49,"line":581},[47,3050,3051],{"class":592},"# Проверить доступные/используемые ресурсы на нодах\n",[47,3053,3054,3056,3058],{"class":49,"line":596},[47,3055,253],{"class":53},[47,3057,406],{"class":57},[47,3059,409],{"class":57},[21,3061,3062,3063,3065,3066,3069,3070,3073],{},"Если pod в ",[30,3064,27],{}," и событие говорит ",[30,3067,3068],{},"0/1 nodes are available: 1 Insufficient memory",", значит, ни одна нода не имеет достаточно свободной памяти для удовлетворения ",[30,3071,3072],{},"requests.memory"," пода.",[225,3075,3077],{"id":3076},"шаг-5-валидируйте-манифест-и-образ-контейнера","Шаг 5: Валидируйте манифест и образ контейнера",[21,3079,3080],{},"Иногда проблема лежит в самом определении пода (YAML/JSON) или в недоступности образа.",[38,3082,3084],{"className":40,"code":3083,"language":42,"meta":43,"style":43},"# Проверьте синтаксис манифеста перед применением (если редактировали)\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",[30,3085,3086,3091,3105,3109,3114,3119,3162,3166,3171,3176],{"__ignoreMap":43},[47,3087,3088],{"class":49,"line":50},[47,3089,3090],{"class":592},"# Проверьте синтаксис манифеста перед применением (если редактировали)\n",[47,3092,3093,3095,3097,3100,3102],{"class":49,"line":67},[47,3094,253],{"class":53},[47,3096,748],{"class":57},[47,3098,3099],{"class":97}," --dry-run=client",[47,3101,751],{"class":97},[47,3103,3104],{"class":57}," your-pod-manifest.yaml\n",[47,3106,3107],{"class":49,"line":85},[47,3108,2584],{"emptyLinePlaceholder":1041},[47,3110,3111],{"class":49,"line":554},[47,3112,3113],{"class":592},"# Проверьте, доступен ли образ и есть ли права на его скачивание\n",[47,3115,3116],{"class":49,"line":565},[47,3117,3118],{"class":592},"# (если используется приватный реестр)\n",[47,3120,3121,3123,3125,3127,3129,3132,3134,3136,3138,3140,3142,3144,3146,3149,3152,3154,3156,3159],{"class":49,"line":573},[47,3122,253],{"class":53},[47,3124,61],{"class":57},[47,3126,1991],{"class":57},[47,3128,299],{"class":264},[47,3130,3131],{"class":57},"secret-nam",[47,3133,306],{"class":305},[47,3135,309],{"class":264},[47,3137,312],{"class":97},[47,3139,299],{"class":264},[47,3141,317],{"class":57},[47,3143,306],{"class":305},[47,3145,309],{"class":264},[47,3147,3148],{"class":97}," -o",[47,3150,3151],{"class":57}," yaml",[47,3153,265],{"class":264},[47,3155,268],{"class":53},[47,3157,3158],{"class":97}," -E",[47,3160,3161],{"class":57}," \"username|password\"\n",[47,3163,3164],{"class":49,"line":581},[47,3165,2584],{"emptyLinePlaceholder":1041},[47,3167,3168],{"class":49,"line":596},[47,3169,3170],{"class":592},"# Попробуйте вручную запустить pod с другим образом (например, alpine) в том же namespace,\n",[47,3172,3173],{"class":49,"line":1585},[47,3174,3175],{"class":592},"# чтобы проверить общую работоспособность сети и реестра\n",[47,3177,3178,3180,3182,3185,3188,3191,3193,3195,3197,3199,3201,3204,3206,3209],{"class":49,"line":1595},[47,3179,253],{"class":53},[47,3181,2348],{"class":57},[47,3183,3184],{"class":57}," test-pod",[47,3186,3187],{"class":97}," --image=alpine",[47,3189,3190],{"class":97}," --restart=Never",[47,3192,312],{"class":97},[47,3194,299],{"class":264},[47,3196,317],{"class":57},[47,3198,306],{"class":305},[47,3200,309],{"class":264},[47,3202,3203],{"class":97}," --command",[47,3205,1465],{"class":97},[47,3207,3208],{"class":57}," sleep",[47,3210,3211],{"class":97}," 3600\n",[21,3213,3214,3215,3218],{},"Если тестовый pod с ",[30,3216,3217],{},"alpine"," запускается, а ваш — нет, проблема, скорее всего, в вашем образе или его параметрах (тег, реестр, секрет).",[225,3220,3222],{"id":3221},"шаг-6-проверьте-состояние-нод-и-сетевое-подключение","Шаг 6: Проверьте состояние нод и сетевое подключение",[21,3224,3225],{},"Проблемы могут быть не в поде, а в инфраструктуре.",[38,3227,3229],{"className":40,"code":3228,"language":42,"meta":43,"style":43},"# Проверьте статус нод (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",[30,3230,3231,3236,3244,3261,3265,3270,3275,3279,3284,3289],{"__ignoreMap":43},[47,3232,3233],{"class":49,"line":50},[47,3234,3235],{"class":592},"# Проверьте статус нод (Ready, DiskPressure, MemoryPressure и т.д.)\n",[47,3237,3238,3240,3242],{"class":49,"line":67},[47,3239,253],{"class":53},[47,3241,61],{"class":57},[47,3243,409],{"class":57},[47,3245,3246,3248,3250,3252,3254,3257,3259],{"class":49,"line":85},[47,3247,253],{"class":53},[47,3249,293],{"class":57},[47,3251,446],{"class":57},[47,3253,299],{"class":264},[47,3255,3256],{"class":57},"node-nam",[47,3258,306],{"class":305},[47,3260,322],{"class":264},[47,3262,3263],{"class":49,"line":554},[47,3264,2584],{"emptyLinePlaceholder":1041},[47,3266,3267],{"class":49,"line":565},[47,3268,3269],{"class":592},"# Если pod не может быть запланирован из-за толерантностей или селекторов,\n",[47,3271,3272],{"class":49,"line":573},[47,3273,3274],{"class":592},"# проверьте, соответствуют ли метки ноды (labels) селектору пода (nodeSelector/affinity).\n",[47,3276,3277],{"class":49,"line":581},[47,3278,2584],{"emptyLinePlaceholder":1041},[47,3280,3281],{"class":49,"line":596},[47,3282,3283],{"class":592},"# Проверьте, работают ли сетевые решения (CNI) на ноде.\n",[47,3285,3286],{"class":49,"line":1585},[47,3287,3288],{"class":592},"# Обычно для этого нужно зайти на ноду (ssh) и проверить статус подов kube-system.\n",[47,3290,3291,3293,3295,3297,3299],{"class":49,"line":1595},[47,3292,253],{"class":53},[47,3294,61],{"class":57},[47,3296,258],{"class":57},[47,3298,312],{"class":97},[47,3300,3301],{"class":57}," kube-system\n",[16,3303,3305],{"id":3304},"проверка-результата","Проверка результата",[21,3307,3308],{},"После выполнения диагностических шагов и внесения исправлений (например, увеличения лимитов, исправления образа, изменения селектора) обновите состояние пода:",[38,3310,3312],{"className":40,"code":3311,"language":42,"meta":43,"style":43},"kubectl get pod \u003Cpod-name> -n \u003Cnamespace> --watch\n",[30,3313,3314],{"__ignoreMap":43},[47,3315,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340],{"class":49,"line":50},[47,3317,253],{"class":53},[47,3319,61],{"class":57},[47,3321,296],{"class":57},[47,3323,299],{"class":264},[47,3325,302],{"class":57},[47,3327,306],{"class":305},[47,3329,309],{"class":264},[47,3331,312],{"class":97},[47,3333,299],{"class":264},[47,3335,317],{"class":57},[47,3337,306],{"class":305},[47,3339,309],{"class":264},[47,3341,3342],{"class":97}," --watch\n",[21,3344,3345,3348,3349,3352,3353,3356,3357,3360,3361,3363],{},[25,3346,3347],{},"Успешный результат:"," Под переходит в состояние ",[30,3350,3351],{},"Running",", и в столбце ",[30,3354,3355],{},"READY"," отображается ",[30,3358,3359],{},"1/1"," (или соответствующее количество контейнеров). Логи (",[30,3362,1438],{},") показывают нормальную работу приложения без фатальных ошибок.",[16,3365,3367],{"id":3366},"возможные-проблемы","Возможные проблемы",[349,3369,3370,3386,3397,3406,3424],{},[116,3371,3372,3377,3378,3381,3382,3385],{},[25,3373,3374,3376],{},[30,3375,253],{}," не может подключиться к кластеру:"," Проверьте конфигурацию (",[30,3379,3380],{},"kubectl config view","), переменную ",[30,3383,3384],{},"KUBECONFIG"," и сетевое подключение к мастер-ноде.",[116,3387,3388,3393,3394,219],{},[25,3389,3390,3392],{},[30,3391,237],{}," не показывает события:"," События автоматически удаляются через некоторое время. Попробуйте посмотреть события для всего namespace: ",[30,3395,3396],{},"kubectl get events -n \u003Cnamespace> --sort-by='.lastTimestamp'",[116,3398,3399,3405],{},[25,3400,3401,3402,281],{},"Pod в ",[30,3403,3404],{},"Completed"," Это нормальное состояние для заданий (Jobs) или подов с контейнером, который выполнил свою задачу и завершился (например, миграция базы данных). Для долгоживущих сервисов убедитесь, что в контейнере запущен долгий процесс (например, веб-сервер).",[116,3407,3408,3413,3414,3416,3417,3420,3421,219],{},[25,3409,3401,3410,3412],{},[30,3411,2643],{}," вечно:"," Чаще всего причина — ",[30,3415,2647],{}," в спецификации пода или наличие ",[30,3418,3419],{},"preStop"," хука, который не завершается. Принудительное удаление: ",[30,3422,3423],{},"kubectl delete pod \u003Cpod-name> --grace-period=0 --force",[116,3425,3426,3432,3433,3436,3437,840],{},[25,3427,3428,3429,432],{},"Нет доступа к логам (",[30,3430,3431],{},"Error from server: ..."," Проверьте, есть ли у вашего пользователя (ServiceAccount) права на получение логов (",[30,3434,3435],{},"get"," на ресурсе ",[30,3438,3439],{},"pods/log",[980,3441,3442],{},"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":43,"searchDepth":67,"depth":67,"links":3444},[3445,3446,3447,3455,3456],{"id":2512,"depth":67,"text":2513},{"id":2522,"depth":67,"text":2523},{"id":2550,"depth":67,"text":2551,"children":3448},[3449,3450,3451,3452,3453,3454],{"id":2554,"depth":85,"text":2555},{"id":2653,"depth":85,"text":2654},{"id":2784,"depth":85,"text":2785},{"id":2951,"depth":85,"text":2952},{"id":3076,"depth":85,"text":3077},{"id":3221,"depth":85,"text":3222},{"id":3304,"depth":67,"text":3305},{"id":3366,"depth":67,"text":3367},"2026-02-17 11:29:02","Пошаговое руководство по диагностике и исправлению распространённых ошибок подов в Kubernetes. Узнайте, как использовать kubectl для быстрого восстановления работы кластера.","15-20 мин",[3461,3464,3467,3470],{"question":3462,"answer":3463},"Почему мой pod постоянно находится в состоянии Pending?","Состояние `Pending` обычно означает, что планировщик не может найти подходящие ноды с достаточными ресурсами (CPU, память) или есть конфликты с толерантностями/селекторами. Проверьте события пода (`kubectl describe pod`) и доступность ресурсов в кластере.",{"question":3465,"answer":3466},"Что делать, если pod завершается с кодом 137 (OOMKilled)?","Код 137 означает, что контейнер был завершен из-за нехватки памяти (OOM). Нужно увеличить лимит памяти (`resources.limits.memory`) в манифесте пода или оптимизировать приложение, чтобы оно потребляло меньше RAM.",{"question":3468,"answer":3469},"Как узнать, почему pod перезапускается (CrashLoopBackOff)?","Используйте `kubectl logs pod-name --previous`, чтобы увидеть логи предыдущего запуска контейнера. Также проанализируйте вывод `kubectl describe pod`, особенно разделы `Events` и `Last State`.",{"question":3471,"answer":3472},"Можно ли диагностировать pod, если он не имеет контейнеров (например, Init Container завершился с ошибкой)?","Да. Для инициализирующих контейнеров используйте `kubectl logs pod-name -c \u003Ccontainer-name>`. Состояние пода будет `Init:Error` или `PodInitializing`, а события в `kubectl describe pod` укажут на причину.",[3474,3477,3480,3483,3486,3489],{"name":3475,"text":3476},"Проверьте общий статус пода и кластера","Убедитесь, что кластер работает и pod существует. Используйте `kubectl get pods` для просмотра состояния всех подов в namespace.",{"name":3478,"text":3479},"Изучите подробные события и конфигурацию пода","Выполните `kubectl describe pod \u003Cpod-name>`. Внимательно изучите разделы `Events`, `Containers`, `Conditions` — там часто указывается прямая причина проблемы.",{"name":3481,"text":3482},"Проанализируйте логи контейнеров","Используйте `kubectl logs \u003Cpod-name>` для логов текущего контейнера. Если pod перезапускается, добавьте флаг `--previous` для просмотра логов предыдущего экземпляра. Для мультиконтейнерных подов укажите `-c \u003Ccontainer-name>`.",{"name":3484,"text":3485},"Проверьте использование ресурсов (CPU/Memory)","С помощью `kubectl top pod \u003Cpod-name>` оцените потребление ресурсов. Если лимиты превышены, pod может быть завершен (OOMKilled) или быть нераспределённым (Pending).",{"name":3487,"text":3488},"Валидируйте манифест и образ контейнера","Убедитесь, что образ (`image`) существует и доступен. Проверьте секреты (`imagePullSecrets`), настройки сети (`networkPolicy`) и тома (`volumes`). Используйте `kubectl apply --dry-run=client -f manifest.yaml` для валидации синтаксиса.",{"name":3490,"text":3491},"Проверьте состояние нод и сетевое подключение","Убедитесь, что нода, на которой должен запуститься pod, готова (`kubectl get nodes`). Проверьте, нет ли проблем с DNS или сетевыми политиками, блокирующими трафик.","PT20M",[3494,3495,3496,3497,3498,3499,3500],"k8s pod не запускается","kubectl describe pod ошибка","Kubernetes pod CrashLoopBackOff решение","как посмотреть логи пода k8s","pod处于Pending状态 причина","k8s диагностика подов","Kubernetes pod OOMKilled",{},[3503,3504,3505],"/guides/linux/kubectl-basics","/guides/linux/kubernetes-logs-analysis","/errors/linux/k8s-image-pull-error","Гайды Kubernetes",{"title":2504,"description":3458},"guides/linux/k8s-troubleshooting-pods","Это руководство поможет вам системно выявлять и устранять типичные проблемы с подами (pods) в Kubernetes, используя встроенные инструменты командной строки и анализ логов.",[1054,3511,3512,1055,3513,1059,3514],"pods","диагностика","troubleshooting","cluster","guide","YxSJFxzceFvGNvTmc6gMO2kL-E-7nyH0SHGT1M4628g"]