Kubelet 可观测性最佳实践

Kubelet 介绍
Kubelet 是 Kubernetes 集群中的一个核心组件,它在每个节点上运行并负责维护容器的生命周期。这包括创建和删除容器、监控容器的健康状况以及向 Kubernetes 控制平面报告容器的状态。此外,Kubelet 还负责将容器日志上传到配置的日志服务器,并提供容器运行时的度量信息。对 Kubelet 的性能进行深入了解和监控是确保 Kubernetes 集群稳定性和效率的关键。
Kubelet 监控主要有以下几个方面的维度:

Kubelet 组件的核心指标接口,除了本身的 /metrics
以外,还包括 cAdvisor 相关的指标接口 /metrics/cadvisor
。以下为接口的简要说明。
/metrics
/metrics
接口提供了 kubelet 自身以及节点级别的监控指标。这些指标可以帮助管理员监控节点资源使用情况,优化资源分配,并快速定位性能瓶颈。以下是一些关键的指标类型:
CPU 指标:包括 cpu_usage_total(总 CPU 使用量)和 cpu_usage_percent(CPU 使用率)等。
内存指标:包括 memory_usage_total(总内存使用量)和 memory_usage_percent(内存使用率)等。
存储指标:包括 disk_io_total(总磁盘 I/O)和 disk_io_rate(磁盘 I/O 速率)等。
网络指标:包括网络流量和带宽使用情况等。
这些指标对于监控节点资源使用和性能分析至关重要。
/metrics/cadvisor
/metrics/cadvisor
接口是由集成在 kubelet 中的 cAdvisor 提供的,用于监控容器资源使用情况。cAdvisor(Container Advisor)是 Google 开源的一个工具,它可以在各种容器环境中运行,包括 Docker、rkt 等。以下是 cAdvisor 的一些关键特性和指标:
容器级别的监控:cAdvisor 提供了容器级别的资源使用数据,包括 CPU、内存、磁盘 I/O 等。
实时数据:cAdvisor 定期从容器中收集信息,并暴露在 HTTP 接口上供用户查询。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
部署 DataKit
DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。
登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

编辑 datakit.yaml
,把 token 粘贴到 ENV_DATAWAY
环境变量值中“token=”后面,设置环境变量 ENV_CLUSTER_NAME_K8S
的值并增加环境变量 ENV_NAMESPACE
,这两个环境变量的值一般和集群名称对应,一个工作空间集群名称要唯一。

把 datakit.yaml
上传到可以连接到 Kubernetes 集群的主机上,执行如下命令。
采集器配置
KubernetesPrometheus 是 DataKit 的一个采集器,它根据自定义配置实现自动发现 Prometheus 服务并进行采集,极大简化了采集 Kubernetes 集群中 Kubelet 指标的复杂度。
通过在 DataKit 的 Comfigmap 中添加 kubernetesprometheus.conf
采集器,对 Kubelet 中 /metrics
以及 /metrics/cadvisor
指标接口进行采集。
再把 kubelet.conf
挂载到 DataKit 的 /usr/local/datakit/conf.d/kubernetesprometheus/kubelet.conf
下面,最后重新部署 DataKit。
关键指标

场景视图



监控器(告警)
Kubelet 内存告警

Kubelet CPU 告警

Kubelet 操作错误率过高告警

总结
Kubelet 是 Kubernetes 集群中负责维护容器生命周期的核心组件,其性能监控对于保障集群稳定性和效率至关重要。借助观测云,用户不仅能实时掌握 Kubelet 的运行状态,还能通过场景视图直观呈现监控数据,并设置监控器实现告警功能,从而有效管理 Kubelet 性能,提升 Kubernetes 集群的整体可靠性与性能。
评论