K8S-故障-排查思路汇总
一、应用程序故障排查
1、非Running状态时,查看Pod事件进行问题排查
shell
kubectl -n xx describe pod web
2、查看Pod中容器日志
shell
kubectl -n xx logs -f --tail=100 web -c xx
3、进入容器执行命令
shell
kubectl exec -it POD -c xx -- COMMAND args
4、Pod处于pending状态可能原因,无法被正常调度到工作节点
- 下载镜像
- Node节点资源不足
- 没有匹配到节点标签
- 存在污点
5、Pod处于waiting状态可能原因,已被调度到工作节点但无法在该节点运行
- 镜像名称
- 镜像是否已推送到仓库
- 手动在节点上运行docker pull
二、管理节点异常排查
- kubeadm部署,除kubelet服务外,其他组件均采用静态Pod启动
- /etc/kubernetes/manifests
- /var/lib/kubelet/config.yaml (staticPodPath) -- 修改静态pod配置文件路径
三、工作节点异常排查
- **kubelet:**调用容器引擎接口管理容器,并将容器运行状态上报给apiserver
- **kube-proxy:**实现Pod的负载均衡和服务发现,根据访问请求转发到后面的一组Pod
1、Node NotReady可能原因
markdown
<1> kubelet服务启动有问题
<2> kubelet与apiserver网络不通
<3> kubelet携带证书有问题,例如过期
<4> node节点磁盘空间已满
四、Service访问异常排查
client > kube-proxy监听一个端口,接受流量会被iptables/ipvs处理 > 一组pod(分散每个节点)
markdown
<1> kubectl get pod / kubectl get svc -- 查看pod和svc运行是否正常
<2> kubectl get ep -- 查看service是否正常关联到pod
<3> kubectl exec -it web -- netstat -lntp service指定的targetport是否正确
<4> Service是否通过DNS工作
<5> kube-proxy正常工作吗
<6> kube-proxy是否正常写iptables规则
<7> cni网络插件是否正常工作