Prometheus架构
Kubernetes系统中的监控对象
宿主机
宿主机的监控数据
通过Node Exporter 采集宿主机的指标, 以 DaemonSet 的方式运行在每台宿主机上
Kubernetes组件
Kubernetes 的 API Server、kubelet 等组件的 /metrics API
例如APIServer 的/metrics API 暴露出了 Controller
- 工作队列(Work Queue)的长度
- 请求的 QPS
- 延迟数据
核心资源core metrics(Pod、Node、容器、Service资源)
借助cAdvisor 可以细化到每一个容器的 CPU 、文件系统、内存、网络等资源
通过Metrics Server暴露API出去
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespaces/<namespace-name>/pods/<pod-name>
但其实底层访问的数据 来自于kubelet 的 Summary API
<kubelet_ip>:<kubelet_port>/stats/summary
什么是cAdvisor?
cAdvisor是Google开源的容器资源监控和性能分析工具,它是专门为容器而生,并且支持Docker容器。在Kubernetes中,cAdvisor作为kubelet内置的一部分程序可以直接使用,用于收集容器级别的性能数据
什么是Metrics Server?
metrics-server是集群核心监控数据的聚合器,用来替换之前的heapster。
它负责获取kubelet内置的cadvisor服务提供的容器相关的metrics。
有了metrics-server之后,用户就可以通过标准的Kubernetes API来访问这些监控数据。
注意: Metrics Server 并不是 kube-apiserver 的一部分,而是通过 Aggregator 这种插件机制,在独立部署的情况下同 kube-apiserver 一起统一对外服务
什么是kube-aggregator?
为了解决原来的API server的巨石应用问题而设计的。
通过拆分API server,Aggregator使得开发人员能够更方便地开发和集成自己的API server,而无需直接修改Kubernetes官方仓库的代码。
Aggregator的主要职责包括:
- 动态服务注册:支持新服务的动态注册到Kubernetes API中。
- 服务发现与汇总:对集群中的服务进行发现与汇总,提供一个完整的、一致的服务视图。
- 安全代理:作为API server的安全代理,处理用户和系统之间的所有请求
附加metrics server 扩展Kubernetes的API
当你把 Custom Metrics APIServer 启动之后,Kubernetes 里就会出现一个叫作custom.metrics.k8s.io的 API。
访问这个 URL 时,Aggregator 就会把请求转发给对应的 Custom Metrics APIServer
如何开启Aggregator 模式?
方式1
如果你是使用 kubeadm 或者 官方的 github.com/kubernetes/… 脚本部署 Kubernetes 集群的话,Aggregator 模式就是默认开启的
方式2 在 kube-apiserver 的启动参数里加上如下所示的配置
--requestheader-client-ca-file=<path to aggregator CA cert>
--requestheader-allowed-names=front-proxy-client
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
--proxy-client-cert-file=<path to aggregator proxy cert>
--proxy-client-key-file=<path to aggregator proxy key>