CrashLoopBackoff
在创建一个pod之后,出现一个报错,都是按照套路来的,怎么可能会报错呢。。
查看一下相关的日志看看(kubectl describe pods test-pod):
看最后的事件就是不停的重启失败的容器,查看一下容器的日志:
发现容器没有任何日志,查看一下容器是否启动:
发现容器是没有日志的,而且容器已经启动了,但是容器是正常退出的,毕竟状态码为0,查看messages日志,看看有没有其他的报错信息:
Feb 28 04:50:27 dockermaster kubelet: E0228 04:50:27.861552 6256 pod_workers.go:190] Error syncing pod 68581c76-5a06-11ea-8ebf-ba810801ac07 ("test-pod_default(68581c76-5a06-11ea-8ebf-ba810801ac07)"), skipping: [failed to "StartContainer" for "container-1" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=container-1 pod=test-pod_default(68581c76-5a06-11ea-8ebf-ba810801ac07)"Feb 28 04:50:27 dockermaster kubelet: , failed to "StartContainer" for "container-2" with CrashLoopBackOff: "Back-off 5m0s restarting failed container=container-2 pod=test-pod_default(68581c76-5a06-11ea-8ebf-ba810801ac07)"
发现有报错信息error syncing pod,启动容器之后失败,从而形成了崩溃循环。
此报错信息表示:容器进程崩溃或者退出,也就是容器没有在后台运行的进程,从而导致此种情况,有的时候是容器报错了,例如mysql启动的时候,需要添加环境变量,如果没添加,那么也会出现这种报错,无限的重启循环。
从而可以修改创建的yaml文件,在其中直接添加相关运行的命令:
删除原来的,进行重新创建:
mysql进程退出的如下图所示:
在这里可以看到相关的日志,可以查看到环境变量的缺失,而且在查看容器的时候,可以看到容器的退出码为1,表示容器的进程崩溃。
查看messages日志可以看到kubelet报错是类似的:
Feb 28 05:18:35 dockermaster kubelet: E0228 05:18:35.860866 6256 pod_workers.go:190] Error syncing pod 2ceaa659-5a12-11ea-8ebf-ba810801ac07 ("test-pod_default(2ceaa659-5a12-11ea-8ebf-ba810801ac07)"), skipping: failed to "StartContainer" for "container-1" with CrashLoopBackOff: "Back-off 2m40s restarting failed container=container-1 pod=test-pod_default(2ceaa659-5a12-11ea-8ebf-ba810801ac07)"