高效部署:基于 Prometheus 的云原生监控,用完真香?
01 监控方案
-
Cadvisor:数据采集 -
node-exporter:汇总 -
prometheus:处理、存储 -
grafana:展示
02 监控流程
-
容器监控:Prometheus 使用 cadvisor 采集容器监控指标,而 cadvisor 集成在 K8s 的 kubelet 中所以无需部署,通过 Prometheus 进程存储,使用grafana 进行展示。
-
node 节点监控:node 端的监控通过 node_exporter 采集当前主机的资源,通过 Prometheus 进程存储,最后使用 grafana 进行展示。
-
master节点监控:master 的监控通过 kube-state-metrics 插件从 K8S 获取到 apiserver 的相关数据并通过网页页面暴露出来,然后通过 Prometheus 进程存储,最后使用 grafana 进行展示
03 Kubernetes监控指标
3.1 K8S自身监控指标
-
node 资源利用率:监控 node 节点上的 cpu、内存、硬盘等硬件资源 -
node 数量:监控 node 数量与资源利用率、业务负载的比例情况,对成本、资源扩展进行评估 -
pod 数量:监控当负载到一定程度时,node 与 pod 的数量。评估负载到哪个阶段,大约需要多少服务器,以及每个 pod 的资源占用率,然后进行整体评估 -
资源对象状态:在 K8S 运行过程中,会创建很多 pod、控制器、任务等,这些内容都是由 K8S 中的资源对象进行维护,所以可以对资源对象进行监控,获取资源对象的状态
3.2 Pod 的监控
-
每个项目中pod的数量:分别监控正常、有问题的pod数量 -
容器资源利用率:统计当前pod的资源利用率,统计pod中的容器资源利用率,结合cpu、网络、内存进行评估 -
应用程序:监控项目中程序的自身情况,例如并发、请求响应等
04 服务发现
从 K8s 的 api 中发现抓取的目标,并且始终与 k8s 集群状态保持一致。动态获取被抓取的目标,实时从 api 中获取当前状态是否存在,此过程为服务发现。
-
node:自动发现集群中的node节点 -
pod:自动发现运行的容器和端口 -
service:自动发现创建的serviceIP、端口 -
endpoints:自动发现pod中的容器 -
ingress:自动发现创建的访问入口和规则
05 Prometheus 监控 Kubernetes 部署实践
5.1 部署准备
5.2 采用 daemonset 方式部署 node-exporter
5.3 部署 Prometheus
5.4 部署 grafana
5.5 校验测试
1)查看pod/svc信息
2)查看页面
5.6 grafana 模版配置
3)导入K8S Dashboard 模板
4)name 自定义,uid 可以为空,会自己生成,然后选择数据源,选择刚才创建的Prometheus,最后点击 import
06 yaml配置文件
6.1 node-exporter.yaml
6.2 rbac-setup.yaml
6.3 configmap.yaml
6.4 prometheus.deploy.yml
6.5 prometheus.svc.yml
6.6 grafana-deploy.yaml
6.7 grafana-svc.yaml
6.8 grafana-svc.yaml
近期好文:
按这个套路写的年底工作总结,运维人能少背多少锅?
“高效运维”公众号诚邀广大技术人员投稿
投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118。
点个“在看”,一年不宕机
发表评论