-
K8S集群故障排查思路
场景1:测试人员: 说30080端口无法访问,运维同学快点解决下。。场景2:开发同学: Pod部署不成功,一直报错镜像拉取出错。。
场景3:系统运维: Pod一直处于Peding如何解决?
场景4:容器已经处于Runing状态,但是外部依旧无法访问?
场景5:Ingress创建成功,但是访问报错404?咋解决呢?
场景6:sc创建成功,但是创建pod一直处于Pending状态如何解决呢?
场景7: Pod一直处于未就绪状态,怎么解决啊?
…
回答此问题:
– 1.从架构入手,考虑到实际用户的访问请求路径,说白了,就是请求如何到达K8S集群的;
– tcpdump抓包
可能存在的问题太多:
1.LB出现问题
2.worker节点存在问题
3.metallb组件存在问题(Loadbancler);
4.CNI插件问题;
5.coreDNS组件不正常工作;
故障排查技巧:
检查各组件是否正常,比如CNI就可以在多个节点部署pod,测试连通性。
coreDNS就可以使用dig或者,host,nslookup,ping等工具进行测试
工作节点可以查看是否存在污点之类的,节点是否就绪等?
2.Ingress问题
1.Ingress规则和后端的svc关联不正确;
2.Ingressclass组件未正常工作;
3.对于https证书问题;
3.svc存在的问题
1.svc无法关联后端Pod;
1.pod被删除;
2.就绪探针readinessProbe未就绪,ep的地址列表修改;
3.标签选择器未关联到正确的Pod,导致后端的ep没有地址列表,
4.svc没有关联到正确的pod的端口;
故障排查技巧:
kubectl describe
4.Pod存在问题
1.Pod的状态,比如Ruinng,Peding
1.pod没有启动相关的服务
2.发现服务无法启动;
3.查看日志发现缺少相应的依赖包
4.或者是目标数据库没有初始化数据
5.后端引用pvc无法正常工作;
6.后端的sc不正常工作;
7.缺少配置文件,缺失挂载的cm资源;
8.私有镜像仓库,需要指定secret认证信息,认证信息错误也可能有问题;
9.认证信息正确,但是远程仓库的权限不足等问题;
…
故障排查技巧:
kubectl describe
kubectl logs
kubectl exec
修改command 或者args指令
kubectl explain
…