如何排查Azure Kubernetes Service容器自动重启原因?
查看Pod事件
执行命令kubectl describe pod <pod-name> -n <namespace>,重点关注输出末尾的Events区块,这里会明确记录容器重启的触发原因,比如OOMKilled(内存耗尽)、CrashLoopBackOff(进程反复崩溃)、健康检查失败等。查看容器日志
用kubectl logs <pod-name> -c <container-name> -n <namespace>获取当前容器日志,若要查看重启前的崩溃日志,添加--previous参数:kubectl logs <pod-name> -c <container-name> --previous -n <namespace>,日志里通常会包含进程退出的具体报错,比如代码异常、依赖缺失、配置错误。核对资源限制与实际使用
执行kubectl top pod <pod-name> -n <namespace>查看容器实时CPU、内存使用率,对比Pod定义中的resources.limits(资源上限)和requests(资源请求)配置,确认是否因资源超出限制被kubelet强制杀死。深挖Azure Monitor指标
在Azure Monitor中,除了容器运行时长,还可查看内存使用率趋势、OOM事件计数、Pod重启次数等指标,这些数据能快速定位是资源过载还是应用本身的稳定性问题。检查健康探针配置
确认Pod的livenessProbe(存活探针)和readinessProbe(就绪探针)是否配置合理——如果探针的超时时间过短、失败阈值设置太严格,可能导致kubelet误判容器不健康而触发重启。可通过kubectl get pod <pod-name> -n <namespace> -o yaml查看探针配置细节。排查节点层面问题
如果多个Pod在同一节点出现重启,可查看AKS节点的kubelet日志:在Azure Portal的AKS资源页进入“日志”界面,查询Kubelet相关日志,搜索“restart”“kill”等关键词,排查节点故障、kubelet异常等问题。
内容的提问来源于stack exchange,提问作者Tay Cynne

