扩展 Kube State Metrics
原文由 Ellie Huxtable 于 发布,订阅该博客
集群规模变大后,你可能会发现抓取开始耗时变长——kube state metrics 暴露的样本数可能会达到数百万,具体取决于集群中的节点、Pod 等资源数量!
KSM 支持分片,包括自动和手动两种方式。但遗憾的是,自动分片目前仍处于非常早期的开发阶段
自动分片允许每个分片在以 StatefulSet 形式部署时发现自身的标称位置,这对于自动配置分片很有用。这是一项实验性功能,可能会在不另行通知的情况下失效或被移除。
所以,我们可以手动分片!不过这种方式也谈不上多好,因为即使有多个 Pod 在抓取同一类资源,每个 Pod 仍然需要拉取全量数据。也就是说,原本是一个 Pod 拉取 x 的数据,现在会变成 n 个 Pod 各自都拉取 x 的数据。换言之,总的网络传输量是 n * x,而不是如果只传输分片所需数据时的 n * x/n。仍然不够理想。
每个分片都会自行判断某个对象是否由对应的 kube-state-metrics 实例处理。需要注意的是,这意味着即便进行了分片,所有的 kube-state-metrics 实例仍会产生针对所有对象的网络流量和反序列化资源开销,而不仅仅是它们所负责的对象。
到目前为止,我得出的结论是按数据类型来分片。Pod 往往会暴露最多的样本,因此优先将其单独拆分出来是合理的。这样我们就可以用一个 Deployment 来暴露 Pod 相关的指标,另一个则负责其余的所有指标。
看起来其他地方也采用了类似的做法,目前运行得还不错
随机一篇博客
评论
登录后参与讨论