1. 查看 Pod 日志:
- 使用 kubectl logs <pod-name> 命令查看 Pod 内容器的日志。可以通过 -c 选项指定容器名称(如果 Pod 中有多个容器)。
kubectl logs <pod-name> -c <container-name>
2. 进入容器:
- 使用 kubectl exec -it <pod-name> -- /bin/sh 进入 Pod 内容器,以便手动检查容器内部的文件、配置和运行状况。
kubectl exec -it <pod-name> -- /bin/sh
3. 查看 Pod 详细信息:
- 使用 kubectl describe pod <pod-name> 查看 Pod 的详细信息,包括事件、状态、容器信息等。这对于识别 Pod 创建和运行问题非常有帮助。
kubectl describe pod <pod-name>
4. 查看 Pod 中的文件和配置:
- 使用 kubectl cp 命令将文件复制到或从 Pod 中。这对于查看配置文件、日志文件等非常有用。
kubectl cp <pod-name>:<source-path> <destination-path>
kubectl cp <local-source-path> <pod-name>:<destination-path>
5. 检查容器状态:
- 使用 kubectl get pods 和 kubectl get pods -o wide 查看 Pod 的状态和所在节点。确保 Pod 处于 "Running" 状态。
kubectl get pods
kubectl get pods -o wide
6. 检查资源使用情况:
- 使用 kubectl top pod <pod-name> 和 kubectl top node 查看 Pod 和节点的资源使用情况。这有助于确定是否存在资源不足的问题。
kubectl top pod <pod-name>
kubectl top node
7. 查看 Pod 的事件:
- 使用 kubectl get events --sort-by='.metadata.creationTimestamp' 查看集群事件,可以筛选特定 Pod 的事件。
kubectl get events --field-selector involvedObject.name=<pod-name>
8. 使用调试容器:
- 通过将 debug 容器添加到 Pod 中,可以进行调试。例如,使用 kubectl debug <pod-name> -c <container-name>。
kubectl debug <pod-name> -c <container-name>
9. 网络故障排除:
- 使用 kubectl describe pod <pod-name> 和 kubectl get svc 查看网络配置。确保服务和 Pod 的网络设置正确,端口匹配,并且防火墙规则允许流量。
10. 监控和日志聚合:
- 使用监控工具如 Prometheus、Grafana 以及日志聚合工具如 Elasticsearch、Fluentd、Kibana(EFK Stack)等来实时监控和收集 Pod 的性能和日志信息。
在调试 Pod 时,始终通过多种方式进行信息收集,结合使用日志、事件、容器进入、资源监控等工具,以便全面了解问题。具体的调试策略取决于问题的性质,有时可能需要结合多种方法进行排查。
转载请注明出处:http://www.zyzy.cn/article/detail/9795/Kubernetes