k8s部署实例无法启动情况总结
Posted 信行合一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s部署实例无法启动情况总结相关的知识,希望对你有一定的参考价值。
问题原因:健康检查失败
在使用k8s进行部署springcloud项目的时候经常遇见一些服务无法启动的情况,只是因为服务的健康检查没有通过。
这些健康检查包括 数据库、redis、apollo、kafka等等这些第三方的软件。
具体定位方式:
查看当前的服务状态:一般这个时候会报503错误,就是服务没有启动
kubectl describe pod serviceName -n dev-phoenix
解决办法:定位失败原因
查看具体的失败原因需要进入docker里面去执行查询:
kubectl exec -it serviceName /bin/bash -n namespace
#执行查询
curl http://localhost:port/actuator/health
查看具体返回值可以看出来服务启动失败,并且会报告出来具体的失败原因,可以看到 error 指出来是 redis无法连接导致的。
这个问题在本地发现不了,因为本地启动了redis了,但是本身这个项目并没有用到redis,部署到测试环境的时候就会报错了。
解决办法就是把redis的依赖包给去掉,然后问题就解决了。
这里有一个解决问题的思路就是,本地不要启动redis,kafka这类的服务,这样保证本地服务跟线上服务环境一致,这样的话本地启动项目访问健康接口就可以定位出问题所在了,如果在测试环境就需要用很多k8s的命令来去定位问题。
status: "DOWN",
details:
redis:
status: "DOWN",
details:
error: "org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379"
以上是关于k8s部署实例无法启动情况总结的主要内容,如果未能解决你的问题,请参考以下文章