3.25 Kubernetes故障排查实战:Pod异常、网络问题、存储问题诊断技巧
引言
故障排查是Kubernetes运维的重要技能。掌握Pod异常、网络问题、存储问题的诊断方法,能够快速定位和解决问题。本文将详细介绍Kubernetes故障排查的实用技巧和工具。
一、Pod故障排查
1.1 查看Pod状态
# 查看Pod列表kubectl get pods# 查看Pod详细信息kubectl describe pod<pod-name># 查看Pod日志kubectl logs<pod-name># 查看特定容器日志kubectl logs<pod-name>-c<container-name># 实时查看日志kubectl logs -f<pod-name>1.2 常见Pod问题
Pending状态:
# 查看调度事件kubectl describe pod<pod-name>|grepEvents# 检查节点资源kubectl describenode<node-name># 检查污点和容忍度kubectl get nodes --show-labelsCrashLoopBackOff:
# 查看崩溃原因kubectl logs<pod-name>--previous# 检查资源限制kubectl describe pod<pod-name>|grep-A5"Limits"# 检查健康探针kubectl describe pod<pod-name>|grep-A10"Liveness"ImagePullBackOff:
# 检查镜像名称kubectl describe pod<pod-name>|grepImage# 检查镜像拉取Secretkubectl get secrets# 测试镜像拉取dockerpull<image-name>1.3 进入Pod调试
# 进入Podkubectlexec-it<pod-name>-- /bin/sh# 在Pod中执行命令kubectlexec<pod-name>--psaux# 复制文件kubectlcp<pod-name>:/path/to/file ./local-file二、网络故障排查
2.1 Service问题
# 查看Servicekubectl get svc# 查看Service详细信息kubectl describe svc<service-name># 查看Endpointskubectl get endpoints<service-name># 测试Service连接kubectl run -it --rm debug --image=busybox --restart=Never --wget-O- http://<service-name>:<port>2.2 DNS问题
# 测试DNS解析kubectl run -it --rm debug --image=busybox --restart=Never --nslookup<service-name># 查看CoreDNSkubectl get pods -n kube-system|grepcoredns# 查看CoreDNS日志kubectl logs -n kube-system<coredns-pod>2.3 Ingress问题
# 查看Ingresskubectl get ingress# 查看Ingress Controllerkubectl get pods -n ingress-nginx# 查看Ingress Controller日志kubectl logs -n ingress-nginx<ingress-controller-pod>2.4 网络策略问题
# 查看NetworkPolicykubectl get networkpolicies# 测试网络连接kubectl run -it --rmtest--image=busybox --res