在Kuberenetes集群中,我们遇到了集群节点内存耗尽和Linux调用OOM杀手的零星情况。查看日志,似乎调度到Node上的Pod请求的内存超过了Node可以分配的内存。
问题是,当调用OOM杀手时,它会打印出进程及其内存使用情况的列表。然而,由于我们所有的Docker容器都是Java服务,“进程名称”只是显示为"java",不允许我们追踪哪个特定的Pod导致了问题。
如何获取在特定节点上计划运行哪些Pod以及何时运行的历史记录?
发布于 2018-01-04 05:56:18
我们使用Prometheus来监控OOM事件。
此表达式应报告内存使用量达到限制的次数:
rate(container_memory_failcnt{pod_name!=""}[5m]) > 0
仅供参考:这是仅次于正确的文档的最好的东西,the code
发布于 2018-05-28 17:27:30
您现在可以使用kube-state-metrics kube_pod_container_status_terminated_reason
来检测对象模型事件
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"}
发布于 2020-12-23 03:21:50
特定命名空间的事件历史记录,按creationTimestamp排序:
kubectl get events -n YOURNAMESPACE -o wide --sort-by=.metadata.creationTimestamp
或者,如果您想要检查所有名称空间的事件历史记录,请按creationTimestamp排序:
kubectl get events --all-namespaces -o wide --sort-by=.metadata.creationTimestamp
https://stackoverflow.com/questions/39553259
复制相似问题