接下来的几篇文章主要给大家介绍kubernetes线上运维的时候出现问题该如何解决,这篇文章主要介绍Pod已经是Crash状态或者Unhealthy状态应该怎么办?
备注下:如果pod出现问题,我们需要查看pod的详情信息,根据详情信息来判断pod出现的问题。并给出相关的解决方案。使用的命令是:
kubectl describe pods ${POD_NAME}
言归正传,pod状态如果是crash的状态或者是Unhealthy状态,那么这个时候,一般都是pod里面的容器启动出现了问题。所以我们一般需要排查下容器启动的日志。可以使用如下的命令:
kubectl logs ${POD_NAME} ${CONTAINER_NAME}
例如:
kubectl logs -f nginx-79ff98c6cb-4xjhb nginx
这个其实和docker是一样的,应用程序启动出现问题的时候,我们可以直接tail -f来查看对应的日志。看是否报错及其他配置问题。然后根据打印的错误信息进行修改即可。
但是又一个问题,就是当pod是crash状态的时候,我们是看不到对应的日志的,所以这时候我们怎么办呢?使用的命令就应该是这样了:
kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}
使用这个命令我们可以看到对应的错误信息。有时候我们的容器没有直接打印控制台日志,可能会把日志打印到某个文件里面,这时候我们使用logs命令可能就查看不到对应的日志内容了,那这个时候,我们可以使用如下的命令查看信:
kubectl exec ${POD_NAME} -c ${CONTAINER_NAME} -- ${CMD} ${ARG1} ${ARG2} ... ${ARGN}
例如:
kubectl exec cassandra -- cat /var/log/cassandra/system.log
还没有评论,来说两句吧...