k8s项目运维中,相信各位都遇到过 Pod 状态 Bsck Off 的情况,如上图:
该情况主要原因是我们 Pod 中没有任何容器运行成功,而能容器能成功运行的前提是,容器内部是有进程的,只要容器中的进程不停止,容器也不会停止。
因为我们使用的 Deployment 控制器管理的 Pod,所有该 Pod 是会不断重启的(Deployment 只允许容器的 restartPolicy=Always )
推荐阅读 Deployment 详解:https://blog.csdn.net/qq_48450494/article/details/131293684?spm=1001.2014.3001.5501
明白了以上问题,我们要解决该问题,那么就很简单。
首先,排查问题。找到项目为何没有启动成功。我们可以通过修改项目的启动命令,如 sleep 3600。
修改启动命令后,你会发现 Pod 能启动成功,但是我们项目没有启动,进入容器手动执行项目的启动命令,查看具体原因即可。
思路就是:
-
- 修改启动命令,让其 Pod 运行。
-
- 进入容器手动执行项目命令进行排错。