排查问题的思路总结:
1、首先要看下对应的pods运行情况;k8s里所有的上层应用都运行在pods里;所以,遇到问题,首先要排查下pods的运行情况;
一般有几条命令:
(1) 查看命名空间里的pods的运行情况,以及pod所在的node机器;
kubectl get pods -n xxxnamespace -o wide
(2) 查看pod的日志
kubectl logs -n xxxnamespace xxxpodsname
(3) 查看pod的描述
kubectl describe pods -n xxxnamespace xxxpodsname
(4) 进入pod的容器内部查看运行情况
kubectl exec -it xxxpodsname -n xxxnamespace /bin/sh -c xxxcontainername
若命令用的不是非常熟练,可以在KubeSphere的 “平台管理---》集群管理---》应用负载---》容器组”里查看相应的pods;
2、pods里若有错误,看下错误信息;尝试排查问题;
3、因为k8s都是集群环境,pods分布在不同的工作节点里,可以在相似的pods里执行相同的命令对比信息,也可以在不同的pods执行相同的命令对比信息;
甚至是不同的node上的pod之间进行对比; 最终定位到某个Node机器上的某个Pod有问题。然后在排查问题。
4、实在不行,就吧出现问题的节点的Node机器重启下,然后等个10-20分钟左右,再看下情况。尽量不要重启k8s集群的所有机器。
5、k8s里运行的东西比较慢,要有耐心等待几分钟,要确保pods都执行完毕了。 若pod有错误,也不要着急,k8s有自动故障转移和恢复功能,等pods自动愈合。
https://github.com/kubesphere/ks-devops/issues/427