如何检查 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
我之前有一些 运行 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