除/stats/summary接口外还有什么方式可获取Kubernetes节点fs指标?
可行实现方案
- 方案1:使用CRI运行时指标接口
目前K8s官方已经将容器运行时相关指标的采集下放给CRI实现(containerd/CRI-O等),你可以直接调用CRI的RuntimeService相关接口获取容器文件系统统计数据,返回的字段完全覆盖你需要的fs结构体所有属性,包括容量、可用空间、inode统计、统计时间戳等,完全可以对齐原有/stats/summary接口的返回结构。 - 方案2:Kubelet
/metrics/resource接口字段映射
你之前尝试该接口未获取到数据是因为指标命名和原有结构体字段不一致,只需做简单的字段映射即可获得完全匹配的数据:
该接口是K8s当前官方稳定支持的指标接口,无废弃计划。原有 fs字段/metrics/resource对应指标名availableByteskubelet_volume_stats_available_bytescapacityByteskubelet_volume_stats_capacity_bytesusedByteskubelet_volume_stats_used_bytesinodeskubelet_volume_stats_inodesinodesFreekubelet_volume_stats_inodes_freeinodesUsedkubelet_volume_stats_inodes_used - 方案3:节点侧轻量采集DaemonSet
可以自行开发极轻量的DaemonSet部署在所有节点,直接读取节点/proc/mounts、/sys/fs/cgroup下的存储统计信息,或是调用系统statfs类接口自行组装fs结构数据,这种方案完全不依赖kubelet接口变更,长期稳定性最高。 - 方案4:CSI驱动指标采集
如果你需要的是PersistentVolume的存储指标,所有符合K8s规范的CSI驱动都默认暴露对应PV的存储统计指标,字段和你需要的fs结构完全匹配,可以直接采集使用。
官方调研方向参考
当前K8s监控架构的演进方向就是拆分原有kubelet统一聚合指标的能力,将不同维度的指标交由对应的组件负责:运行时指标归CRI实现、存储指标归CSI驱动、节点资源指标归kubelet标准metrics接口,优先选择前两种方案是最符合官方演进路线的,后续不会再有接口废弃的问题。
内容的提问来源于stack exchange,提问作者Miguel Luiz
相关产品推荐
相关产品推荐

