上云无忧 > 文档中心 > 腾讯云容器服务 - Pod 处于 CrashLoopBackOff 状态
容器服务 TKE
腾讯云容器服务 - Pod 处于 CrashLoopBackOff 状态

文档简介:
本文档介绍可能导致 Pod 处于 CrashLoopBackOff 状态的几种情形,以及如何通过排查步骤定位异常原因。请按照以下步骤依次进行排查,定位问题后恢复正确配置即可。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
本文档介绍可能导致 Pod 处于 CrashLoopBackOff 状态的几种情形,以及如何通过排查步骤定位异常原因。请按照以下步骤依次进行排查,定位问题后恢复正确配置即可。

现象描述

Pod 处于 CrashLoopBackOff 状态,说明该 Pod 在正常启动过后异常退出过,此状态下 Pod 的 restartPolicy 如果不是 Never 就可能会被重启拉起,且 Pod 的 RestartCounts 通常大于0。可首先参考 通过 Exit Code 定位 Pod 异常退出原因 查看对应容器进程的退出状态码,缩小异常问题范围。

可能原因

容器进程主动退出
系统 OOM
cgroup OOM
节点内存碎片化
健康检查失败

排查步骤

检查容器进程是否主动退出

容器进程主动退出时,退出状态码通常在0 - 128之间,导致异常的原因可能是业务程序 Bug,也可能是其他原因。请参考 容器进程主动退出 进一步定位异常问题。

检查是否发生系统 OOM

问题分析

如果发生系统 OOM,Pod 中容器退出状态码为137,表示其被 SIGKILL 信号停止,同时内核将会出现以下报错信息。
		
Out of memory: Kill process ...
该异常是由于节点上部署了其他非 K8S 管理的进程消耗了较多的内存,或是 kubelet 的 --kube-reserved 和 --system-reserved 所分配的内存太小,没有足够的空间运行其他非容器进程。
说明
节点上所有 Pod 的实际内存占用总量不会超过 /sys/fs/cgroup/memory/kubepods 中的 cgroup 值( cgroup = capacity - "kube-reserved" - "system-reserved")。通常情况下,如果预留空间设置合理,且节点上其他非容器进程(例如 kubelet、dockerd、kube-proxy 及 sshd 等)内存占用没有超过 kubelet 配置的预留空间,是不会发生系统 OOM 的。

解决方法

为确保不再发生此类问题,您可以根据实际需求对预留空间进行合理的调整。

检查是否发生 cgroup OOM

现象描述

如果是因 cgroup OOM 而停止的进程,可看到 Pod 事件下 Reason 为 OOMKilled,说明容器实际占用的内存已超过 limit,同时内核日志会报 Memory cgroup out of memory 错误信息。

解决方法

请根据需求调整 limit。

节点内存碎片化

如果节点出现内存碎片化严重、缺少大页内存问题,即使总体剩余内存较多,但仍会出现申请内存失败的情况。请参考 内存碎片化 进行异常定位及解决。

健康检查失败

请参考 Pod 健康检查失败 进一步定位异常问题。
相似文档
  • 故障现象: Pod 突然不断重启,期间有流量进入,这部分流量异常。 原因: 1. Pod 之前所在节点异常,重建漂移到了其它节点去启动。 2. Pod 重建后由于基础镜像中依赖的一个服务有问题导致启动较慢,因为同时配置了 ReadinessProbe 与 LivenessProbe,大概率是启动时所有健康检查都失败,达到 LivenessProbe 失败次数阈值,又被重启。
  • 本文档介绍可能导致容器进程主动退出的几种场景,以及如何通过排查步骤定位异常原因。请按照以下步骤依次进行排查,定位问题后恢复正确配置即可。
  • 本文向您介绍如何为数据盘设置文件系统卷标。 使用背景: NVMe 数据盘的盘符由 NVMe 盘的驱动生成,如果驱动加载顺序不一致可能会导致盘符变化。因此,由于操作系统和物理机的限制,云服务器 CVM 部分普通机型(如黑石、高 IO 型、高性能 HCC 等)挂载多块 NVMe 数据盘时,重启系统后盘符可能会错乱。更多内容可参考 Linux 云服务器重启后云硬盘未自动挂载。
  • 默认情况下腾讯云无法登录集群进行问题排障,如果您需要腾讯云售后协助进行运维排障,请参考以下步骤授予腾讯云运维权限。您有权随时吊销回收授予腾讯云的运维排障权限。
  • Cluster Autoscaler(CA)与基于监控指标的弹性伸缩的节点扩缩容有什么不同? Cluster Autoscaler 确保集群中的所有 Pod 都可调度,不管具体的负载;而基于监控指标的节点弹性伸缩在自动扩缩时不关心 Pod,可能会添加一个没有任何 Pod 的节点,或者删除一个有一些系统关键 Pod 的节点,例如 kube-dns。Kubernetes 不鼓励这种自动缩容机制,故 Cluster Autoscaler 与基于监控指标的弹性伸缩的节点互相冲突,请不要同时启用。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部