如何获取在Kubernetes Node上运行Pod的历史记录?

srk*_*Z84 7 java linux linux-kernel kubernetes

在我们Kuberenetes集群,我们正在运行到零星的情况下群集节点运行的内存和Linux调用OOM杀手.查看日志,似乎调度到节点上的Pod请求的内存多于节点可以分配的内存.

问题在于,当调用OOM杀手时,它会打印出进程列表及其内存使用情况.但是,由于我们所有的Docker容器都是Java服务,因此"进程名称"只显示为"java",不允许我们追踪导致问题的特定Pod.

如何获取计划在特定节点上运行哪些Pod的历史记录以及何时?

Cam*_*mil 10

您现在可以使用 kube-state-metricskube_pod_container_status_terminated_reason来检测 OOM 事件

kube_pod_container_status_terminated_reason{reason="OOMKilled"}

kube_pod_container_status_terminated_reason{container="addon-resizer",endpoint="http-metrics",instance="100.125.128.3:8080",job="kube-state-metrics",namespace="monitoring",pod="kube-state-metrics-569ffcff95-t929d",reason="OOMKilled",service="kube-state-metrics"}
Run Code Online (Sandbox Code Playgroud)


Paw*_*żak 5

我们使用Prometheus来监控OOM事件。

此表达式应报告内存使用量达到限制的次数:

rate(container_memory_failcnt{pod_name!=""}[5m]) > 0
Run Code Online (Sandbox Code Playgroud)

仅供参考:这是仅次于正确文档和代码的最佳选择