Pod 状态失败原因

fly*_*yer 5 kubernetes kubelet kube-controller-manager

如果 Pod 的状态为Failed,Kubernetes 将尝试创建新的 Pod,直到terminated-pod-gc-threshold到达kube-controller-manager。这将Failed在集群中留下许多 Pod,需要进行清理。

除了这个之外还有其他原因Evicted会导致PodFailed吗?

Arb*_*aaz 6

导致 POD 状态为 的原因有很多FAILED。您只需要通过运行命令来检查是否存在问题(如果存在)

kubectl -n <namespace> describe pod <pod-name>
Run Code Online (Sandbox Code Playgroud)

仔细检查EVENTS列出 POD 创建期间发生的所有事件的部分。希望您能从那里查明失败的原因。

然而,POD 失败的原因有多种,其中一些如下:

  • POD 使用的图像错误。
  • 错误的命令/参数被传递到 POD。
  • Kubelet 无法检查 POD 活力(即活力探测失败)。
  • POD 健康检查失败。
  • 网络 CNI 插件存在问题(用于网络的 CNI 插件配置错误)。


例如:

由于镜像拉取错误,pod 失败

在上面的示例中,无法拉取镜像“not-so-busybox”,因为它不存在,因此 pod 无法运行。Pod 状态和事件清楚地描述了问题。


Pjo*_*erS 2

POD 将无法承受调度故障、节点故障或其他驱逐(例如缺乏资源或节点维护的情况)。Pod 不应该手动创建,而几乎总是通过控制器(如部署)创建(自我修复、复制等)。

pod 失败或终止的原因可以通过以下方式获取

kubectl describe pod <pod_name>
Run Code Online (Sandbox Code Playgroud)

pod失败时我遇到的其他情况:

  • 图像问题(不再存在)
  • 当 pod 尝试访问 ConfigMap 或 Secrets 但在命名空间中找不到它时。
  • 活性探针失败
  • 持久卷无法挂载
  • 验证错误

另外,驱逐是基于资源的——EvictionPolicy

它也可能是由 DRAINing Node/Pod 引起的。您可以在此处阅读有关 DRAIN 的内容。