如果容器处于 CrashLoopBackOff 状态,如何执行到容器中并查看文件

Ron*_*tel 4 node.js docker kubernetes

我正在运行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
Run Code Online (Sandbox Code Playgroud)

日志中的信息不多,我无法从容器中的给定路径访问完整的日志文件。

当我尝试在容器中检查该文件时:

kubectl exec -it api-5db677ff5-p824m -- /bin/bash
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

错误:无法升级连接:找不到容器(“api”)

Fra*_* Gu 6

如果您有权访问 k8s 节点,则可以访问(所有)pod 的日志/var/log/pods

或者,您可以尝试将 PVC 挂载到您的节点 pod 并将您的节点应用程序配置为写入那里的日志。这将确保您的崩溃日志在容器崩溃时不会被破坏。

另一种类似的方法是覆盖您的 pod 容器命令,sleep 3600然后exec进入容器以手动运行您的节点应用程序。一旦节点进程崩溃并写入日志,您就可以查看它们(在容器内)。

希望这可以帮助!