如何检查 Kubernetes pod 是否因 OOM 或 DEADLINE EXCEEDED 而被杀死?

How do I check if a Kubernetes pod was killed for OOM or DEADLINE EXCEEDED?

我之前有一些 运行 pods 我认为是因为 OOM 或 DEADLINE EXCEEDED 被 Kubernetes 杀死了,确认这一点的最可靠方法是什么?特别是如果 pods 不是最近的。

如果在您输入 kubectl get pods -a 时 pods 仍然出现,那么您将输入以下内容 kubectl describe pod PODNAME 并查看终止原因。输出类似于以下内容(我提取了与此讨论相关的部分输出):

Containers:
  somename:
    Container ID: docker://5f0d9e4c8e0510189f5f209cb09de27b7b114032cc94db0130a9edca59560c11
    Image:      ubuntu:latest
    ...
    State:      Terminated
      Reason:       Completed
      Exit Code:    0

在示例输出中,我的 pod 的终止原因是 Completed,但您会看到其他原因,例如 OOMKilled 和其他原因。

如果pod已经被删除,你也可以查看kubernetes events看看是什么情况:

$ kubectl get events

LAST SEEN   FIRST SEEN   COUNT    NAME                                               KIND                      SUBOBJECT                                     TYPE      REASON                SOURCE    MESSAGE
59m         59m          1        my-pod-7477dc76c5-p49k4                            Pod                       spec.containers{my-service}                   Normal    Killing               kubelet   Killing container with id docker://my-service:Need to kill Pod