K8S(KubeSphere)边做边学(一)——基础故障排查

发布时间 2023-10-29 02:08:20作者: ik赵云

公司系统近1年开始转变为基于微服务的k8s部署结构,使用的是kubesphere。

由于公司系统迭代更新频率较高,且不时有新的私有化客户部署搭建,更新和部署过程中经常会遇到各类问题。对于研发出生,非运维专业又是半路出家学习了解K8S的我来说,一路磕磕碰碰,边学习边积攒经验,并对期间的操作处理做个总结记录。

当排查到应用出现问题需要检查K8S上的应用时:
1.先查看工作负载的运行情况,如果列表中工作负载的名称下出现黄色错误提示时,点击进入工作负载查看具体情况。

2.在工作负载详情页面,可以看到负载的运行具体情况,如果工作负载有问题,可以在具体的容器下出现黄色的错误描述

3.当容器出现错误时,可以点击容器,进入容器的详情页,并在“事件”选项卡中,查看到当前容器的历史运行状况,若有错误告警,则可以看到部分告警的较为详细的消息内容,根据消息内容初步判断相应问题。

比如以上截图中的告警消息提示就有 连接tcp ip 8084 connect connection refused 的错误内容,表示对该tcp端口的连接被拒绝,这个可以判断为工作负载配置的健康检查tcp端口错误,需修改端口设置。这里注意需按照具体服务运行的端口情况设置。

4.如果在以上步骤中还不能判断出故障原因,可以借助kubectl工具(即工作负载详情界面右下角的小锤子中的控制工具),使用命令行查看容器详情

5.按以上截图进入kubectl命令行模式之后,按照查看容器详情模式命令,输入所在项目namespace和具体容器名称containername,查看指定容器的具体运行详情内容。命令格式如下:
kubectl describe pods -n {namespace} {containername}
输入后会在命令行界面显示所有该容器的详细描述

6.按目前遇到的问题,大致为以下几类原因:
6.1 最底部的事件中查看,容器镜像拉取失败。这种可能是镜像仓库的连接有问题,比如网络连接不通、没有仓库权限等。对照查看镜像配置和镜像仓库连接解决即可。

6.2 最底部的事件中查看,健康检查配置错误。比如设置的http类型检查,实际应该是tcp类型,或者设置的检查端口错误。重新配置健康检查即可。

6.3 最底部的事件中查看,没有异常内容显示,此时往上查看,在容器状态原因描述中,可以看到错误原因,如OOMKilled,或者环境变量配置错误(引用了配置字典中不存在的配置等),针对具体情况做修改调整。

以上排障都是针对工作负载或容器的K8S基础故障排查,通过KubeSphere工具本身的功能一般能比较方便和快速定位到问题和原因。 但如果非K8S本身基础故障,而是应用内部本身的问题,则需要进入具体的容器内部借助应用本身的日志事件来排查和定位问题。