在Linux系统中进行Kubernetes(K8S)故障排查通常涉及以下步骤:
审视集群状态:
kubectl get nodes 命令检查节点状态,确保所有关键组件如etcd、kubelet和kube-proxy正常运行。追踪事件日志:
kubectl get events 命令查看集群事件日志,这些日志记录了与集群中重要事件和错误相关的信息,有助于定位问题。聚焦Pod状态:
kubectl get pods --all-namespaces 命令获取所有Pod的状态,检查是否有Pod处于非运行状态(如挂起、错误或未就绪)。可以使用 kubectl describe pod <pod_name> 获取特定Pod的详细信息。检查网络连通性:
kubectl get services 查看服务状态,并通过 kubectl describe service <service_name> 获取服务的详细信息。审视存储配置:
kubectl get pv、kubectl get pvc 和 kubectl get storageclass 命令获取存储相关信息。研究容器日志:
kubectl logs 命令查看特定Pod中容器的日志输出。如果Pod内有多个容器,可以使用 kubectl logs -c <container_name> 查看特定容器的日志。使用诊断工具:
kubectl debug 是一个强大的工具,可以通过启动一个调试工具容器并将其加入到目标业务容器的pid、network、user以及ipc namespace中,使用netstat、tcpdump等工具进行故障排查。检查资源使用情况:
kubectl top pod 命令查看Pod的资源使用情况,包括CPU和内存的占用情况,判断是否存在资源过载。检查网络配置:
kubectl describe pod 命令查看Pod的网络配置,确保网络正常通畅。也可以通过 kubectl exec -it -- ping 命令测试Pod是否能够访问指定IP地址。分析系统日志:
journalctl -xeu etcd、journalctl -xeu kubelet 等,以获取组件日志信息。使用监控工具:
案例分析:
通过上述步骤,可以系统地进行K8S故障排查,快速定位并解决问题,确保集群的稳定运行。