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部署实例无法启动情况总结的主要内容,如果未能解决你的问题,请参考以下文章

解决阿里云ECS下kubeadm部署k8s无法指定公网IP

k8s是怎么启动镜像的

微服务架构 - 离线部署k8s平台并部署测试实例

k8s集群部署eureka总结

rancher部署k8s遇到的问题总结

k8s部署有状态应用redis-cluster集群踩坑总结