Skip to content

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网络插件是否正常工作