Kubernetes Pod 健康问题:CrashLoopBackoff

时间:2025-03-31 18:01:37

搭建 Prometheus 的过程中,alertmanager-main 的 Status状态为CrashLoopBackoff. 我的alertmanager-main svc下有三个alertmanager-main-0 alertmanager-main-1 alertmanager-main-2

1.检查状态

kubectl describe pod alertmanager-main-0 -n monitoring
  • 1

输出的关键内容如下(Liveness probe failedReadiness probe failed):

Warning  Unhealthy  23m (x6 over 23m)      kubelet, 192.168.6.11  Liveness probe failed: Get http://172.17.25.5:9093/-/healthy: dial tcp 172.17.25.5:9093: connect: connection refused
Warning  Unhealthy  8m53s (x148 over 23m)  kubelet, 192.168.6.11  Readiness probe failed: Get http://172.17.25.5:9093/-/ready: dial tcp 172.17.25.5:9093: connect: connection refused
Warning  BackOff    3m51s (x34 over 12m)   kubelet, 192.168.6.11  Back-off restarting failed container
  • 1
  • 2
  • 3

2. 检查日志

kubectl logs alertmanager-main-0 -n monitoring
  • 1

输出的日志为info,没有错误信息

level=info ts=2019-06-06T17:11:30.007373879Z caller=:177 msg="Starting Alertmanager" version="(version=0.16.1, branch=HEAD, revision=571caec278be1f0dbadfdf5effd0bbea16562cfc)"
level=info ts=2019-06-06T17:11:30.007550871Z caller=:178 build_context="(go=go1.11.5, user=root@3000aa3a06c5, date=20190131-15:05:40)"
  • 1
  • 2

3. 解决尝试1

先删除monitoring下面的所有pod,别担心,删除了pod会自动再创建(前提是你的镜像没有问题), 注意自己挂载的文件

kubectl delete pod -all -n monitoring
  • 1

再次get检查,如果还是没有成功

4. 检查自己的资源

我自己机器非常小,2核2G,因此我必须要更改副本数,原来的副本数为3,现在更改为1

kubectl edit alertmanager-main -n monitoring
  • 1

在编辑器中,将副本数改为1,然后保存并退出。

spec:
  replicas: 1
  • 1
  • 2

确认 StatefulSet 更新状态

kubectl get statefulset alertmanager-main -n monitoring -o yaml | grep replicas
  • 1

设置之后,我删除了alertmanager-main的pod。重新只启动了一个,但是没有再出现CrashLoopBackoff的错误。