Как выполнить в контейнер и просмотреть файл, если контейнер находится в состоянии CrashLoopBackOff - PullRequest
0 голосов
/ 04 апреля 2019

Я использую приложение nodejs на kubernetes, и оно находится в состоянии CrashLoopBackOff.

kubectl logs api-5db677ff5-p824m

> api@0.0.1 staging /home/node
> NODE_ENV=staging node src/loader.js

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! api@0.0.1 staging: `NODE_ENV=staging node src/loader.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the api@0.0.1 staging script.
npm ERR! This is probably not a problem with npm. There is likely additional 
logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/node/.npm/_logs/2019-04-04T14_24_26_908Z-debug.log

В журналах не так много информации, и я не могу получить доступ к полному файлу журнала по указанному пути в контейнере.

Когда я пытаюсь проверить этот файл в контейнере:

kubectl exec -it api-5db677ff5-p824m -- /bin/bash

Это дает мне эту ошибку:

ошибка: невозможно обновить соединение: контейнер не найден ("api")

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Если у вас есть доступ к узлу k8s, вы можете получить доступ к журналам (всех) модулей в /var/log/pods.

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

Другой аналогичный подход - переопределить команду контейнера pod с помощью sleep 3600, а затем exec в контейнере, чтобы запустить приложение узла вручную.После сбоя процесса узла и записи журналов вы можете просмотреть их (внутри контейнера).

Надеюсь, это поможет!

0 голосов
/ 04 апреля 2019

Вы можете вызвать exec только для контейнеров, которые находятся в «рабочем» состоянии.

Если контейнер в состоянии CrashLoopBackOff, вы не можете этого сделать, потому что у вас нет работающего контейнера, в котором K8s может вызвать команду.

Единственный способ получить этот файл - сохранитьэто к некоторому общему объему или каталогу хоста и затем проверьте это там.Попробуйте проверить Тома Документация .

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