56 K8S 之 Kubernetes 监控
与传统 IT 基础设施中的监控系统相比,面向 Kubernetes 平台上容器化应用的监控策略需要提供针对编排工具及容器运行时的增强配置,以便提供这类新增基础架构层的可见性。
这个新增的基础设施层中待监控的核心目标主要由 Kubernetes 系统组件、附加组件、计算和存储资源、Kubernetes 资源对象及容器运行时所组成。
Kubernetes 系统组件:主要包括控制平面组件 API Server、ControllerManager、Scheduler 和 etcd,以及各节点上的 kubelet、kube-proxy 等;这些组件均暴露了/healthz 端点以支持健康状态检测,也提供了/metrics 端点以暴露内部的关键指标。
附加组件:用于扩展 Kubernetes 功能的 CoreDNS、Dashboard、IngressController、Cluster Log,甚至是监控组件自身等。
计算和存储资源:统计 Node 及 Pod 级别的计算资源使用状况,通常由 MetricsServer 统一收集并通过 Metrics API 提供。
Kubernetes 资源对象:Kubernetes 多种 API 的抽象,来确保应用容器(如 Deployment、Pod、PVC/PV 和 Node 等)PVC/PV 和 Node 等)的可用性,kube-state-metrics 服务器能够从 API Server 中获取这些 API 对象的状态和健康信息,并将它们暴露为指标格式。
Kubernetes 集群中,除了从此前配置的 Pod 对象的容器应用获得资源指标数据以外,Prometheus 还支持通过多个监控目标采集 Kubernetes 监控架构体系中所谓的“非核心指标数据”。
Prometheus 数据源
1)监控代理程序:例如 node_exporter,负责收集标准的主机指标数据,包括平均负载、CPU、内存、磁盘、网络及诸多其他维度的数据。
2)kubelet(cAdvisor):收集容器指标数据,它们也是 Kubernetes“核心指标”,每个容器的相关指标数据主要有 CPU 利用率(user 和 system)及限额、文件系统读/写限额、内存利用率及限额、网络报文发送/接收/丢弃速率等。
3)Kubernetes API Server:收集 API Server 的性能指标数据,包括控制工作队列的性能、请求速率与延迟时长、etcd 缓存工作队列及缓存性能、普通进程状态(文件描述符、内存、CPU 等)、Golang 状态(垃圾回收、内存和线程等)。
4)kube-state-metrics:该组件根据 Kubernetes API Server 中的资源派生出多种资源指标,它们主要是资源类型相关的计数器和元数据信息,包括指定类型的对象总数、资源限额、容器状态(ready/restart/running/terminated/waiting)以及 Pod 资源的标签系列等。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/4cc56e83eca74e863137a6245】。文章转载请联系作者。
评论