k8s集群中,容器级别的数据采集是由cAdvisor程序实现
cAdvisor # Container Advisor 容器顾问
cAdvisor程序是kubelet组件的一部分。
每个节点,包括master节点,都有一个kubelet系统服务,
kukelet负责管理pod和容器的生命周期
其cAdvisor程序可以采集cpu内存网络io等数据
cAdvisor采集容器级别的数据
kubelet负责汇总出节点级别的数据
metrics server监控组件定期从kubelet获取这些数据,转换成k8s API可以识别的格式
Prometheus从这个API获取数据,kubectl top命令,和HPA控制器也是从这个API获取数据
Grafana从Prometheus获取数据,进行展示
kubelet是以软件包的形式安装,yum -y install kubelet,以系统服务的形式运行
用systemd管理,配置文件一般在/var/lib/kubelet/目录下
metrics-server是以DaemonSet的形式部署
metrics-server需要签发证书才能采集数据,
签发证书需要先修改kubelet配置文件,添加一行
serverTLSBootstrap: true
重启kubelet服务
]kubectl certificate approve xxx # 管理控制节点签发证书
]echo 'serverTLSBootstrap: true' >>/var/lib/kubelet/config.yaml 计算节点也配置证书
然后在master节点给计算节点签发证书
top命令就可以看到cpu和内存的统计数据了
可以kubelet top pods查看pod级别的数据
也可以kubelet top nodes查看node级别的数据
metrics-server官方资源文件地址:
metrics-server/manifests/base at master · kubernetes-sigs/metrics-server · GitHubScalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. - metrics-server/manifests/base at master · kubernetes-sigs/metrics-serverhttps://github.com/kubernetes-sigs/metrics-server/tree/master/manifests/base
prometheus官方资源文件地址:
https://github.com/prometheus-operator/kube-prometheushttps://github.com/prometheus-operator/kube-prometheus