2

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

Evicted除了会导致 Pod之外,还有其他原因Failed吗?

4

3 回答 3

4

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

kubectl -n <namespace> describe pod <pod-name>

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

但是,POD 故障有多种原因,其中一些原因如下:

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


例如:

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

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

于 2019-04-08T18:26:21.473 回答
2

POD 将无法在调度失败、节点故障或其他驱逐(例如资源不足或节点维护的情况下)中幸存下来。Pod 不应该手动创建,但几乎总是通过像 Deployments 这样的控制器来创建(自我修复、复制等)。

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

kubeclt describe pod <pod_name>

我在 pod Failed 时遇到的其他情况:

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

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

它也可能是由 DRAINing 节点/Pod 引起的。您可以在此处阅读有关 DRAIN的信息。

于 2019-04-08T15:48:46.040 回答
2

只需这样做:

kubectl get pods <pod_name> -o yaml

在输出中,接近尾声,您可以看到如下内容:

在此处输入图像描述

这将使您很好地了解 pod 究竟在哪里失败以及发生了什么。

于 2020-07-07T16:59:38.913 回答