我希望能够在时间轴上看到 kube 集群发生的所有各种事情,包括何时发现节点已死亡、何时添加新节点、何时崩溃以及何时重新启动。
到目前为止我们发现的最好的是kubectl get event
但这似乎有一些限制:
- 它不会回溯那么远(我不确定它回溯多久。一天?)
- 它结合了类似的事件,并按每组中最新事件的时间对结果列表进行排序。这使得不可能知道在某个时间范围内发生了什么,因为该范围内的事件可能已与该范围之外的后续事件组合在一起。
我的一个想法是编写一个 pod,它将使用 API 来监视事件流并将其记录到文件中。这可以让我们控制保留,并且我们观看时发生的事件似乎不会被合并,也解决了第二个问题。
其他人对此做了什么?
-
我的理解是 Kubernetes 本身会删除事件,记录如下:https://github.com/kubernetes/kubernetes/blob/master/docs/design/event_compression.md https://github.com/kubernetes/kubernetes/blob/master/docs/design/event_compression.md一旦发生这种情况,就无法恢复单个事件。
See https://github.com/kubernetes/kubernetes/issues/36304 https://github.com/kubernetes/kubernetes/issues/36304对于投诉如何丢失信息。https://github.com/kubernetes/kubernetes/pull/46034 https://github.com/kubernetes/kubernetes/pull/46034至少改进了消息。也可以看看https://github.com/kubernetes/enhancements/pull/1291 https://github.com/kubernetes/enhancements/pull/1291KEP 近期关于提高 kubectl 可用性的讨论和提案。
-
事件保留多长时间?他们的“生存时间”显然是由 kube-apiserver 控制的--event-ttl
选项,默认为 1 小时:https://github.com/kubernetes/kubernetes/blob/da53a247633/cmd/kube-apiserver/app/options/options.go#L71-L72 https://github.com/kubernetes/kubernetes/blob/da53a247633/cmd/kube-apiserver/app/options/options.go#L71-L72
你可以提出这个。可能需要更多资源etcd
——从我在 2015 年 github 的一些讨论中看到,事件 TTL 曾经是 2 天,事件是主要强调的事情etcd
...
在紧要关头,也许可以从各种日志,尤其是 kubelet 日志中弄清楚之前发生了什么?
保存事件
Running kubectl get event -o yaml --watch
到持久文件听起来像是一件简单的事情。我think当您观看事件到达时,您会看到它们已进行重复数据删除处理。
Heapster 可以将事件发送到一些支持的接收器:https://github.com/kubernetes/heapster/blob/master/docs/sink-configuration.md https://github.com/kubernetes/heapster/blob/master/docs/sink-configuration.md
事件路由器 https://github.com/heptiolabs/eventrouter可以将事件发送到各种接收器:https://github.com/heptiolabs/eventrouter/tree/master/sinks https://github.com/heptiolabs/eventrouter/tree/master/sinks
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)