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