在CentOS上进行Kubernetes(k8s)故障排查可以通过以下步骤和方法进行:
检查节点状态:
使用 kubectl get nodes
命令来检查各个节点的状态,确认是否有节点未能就绪或出现异常状态。
查看事件日志:
使用 kubectl get events
命令查看集群中发生的事件,深入了解与集群中重要事件和错误相关的信息。
检查Pod状态:
使用 kubectl get pods --all-namespaces
命令获取所有Pod的状态,并通过 kubectl describe pod pod_name
获取特定Pod的详细信息。
检查网络连通性:
使用 kubectl get services
命令查看服务状态,并验证网络策略和防火墙规则的正确配置。
审视存储配置:
使用 kubectl get pv
, kubectl get pvc
, 和 kubectl get storageclass
命令检查存储卷声明、存储类和持久卷的状态。
研究容器日志:
使用 kubectl logs pod_name -c container_name
命令查看特定Pod中容器的日志输出。
kubectl-debug:
这是一个强大的 kubectl
插件,通过启动一个调试工具容器,并将其加入到目标业务容器的pid、network、user以及ipc namespace中,使用netstat、tcpdump等工具进行故障排查。
自定义故障排查工具:
可以编写脚本或使用现成的工具来获取故障Pod列表并分析其日志。例如,使用 kubernetes/client-go
库编写脚本获取故障Pod的日志信息。
网络问题排查:
ping
命令测试节点间的网络连接。kubectl describe pod pod_name
查看Pod的网络配置和事件。应用程序故障排查:
kubectl describe pod pod_name
查看Pod的事件和状态。kubectl logs pod_name -c container_name
查看容器的日志,定位问题。使用journalctl命令:
journalctl
是systemd日志系统的命令行工具,可以用来查看Kubernetes组件的日志。例如:
journalctl -u kubelet
journalctl -u kubelet -f
journalctl --since "2023-10-01"
journalctl -p info
journalctl -u kube-apiserver
使用kubectl logs命令:
kubectl logs
命令可以用来查看Pod中容器的日志。例如:
my-app-pod
的Pod的日志:kubectl logs my-app-pod
kubectl logs -f my-app-pod
kubectl logs -n kube-system my-app-pod
kubectl logs my-app-pod -c container-name
kubectl logs my-app-pod --previous
使用第三方工具:
通过上述方法和工具,可以系统地对Kubernetes集群进行故障排查,快速定位并解决问题,确保系统的稳定运行。