高效部署:基于 Prometheus 的云原生监控,用完真香
  8NpFq6F8GNVm 2023年12月11日 15 0

01 监控方案

Cadvisor + node_exporter + prometheus + grafana

  • 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、网络、内存进行评估
  • 应用程序:监控项目中程序的自身情况,例如并发、请求响应等

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源

04 服务发现

从 K8s 的 api 中发现抓取的目标,并且始终与 k8s 集群状态保持一致。动态获取被抓取的目标,实时从 api 中获取当前状态是否存在,此过程为服务发现。

自动发现支持的组件:

  • node:自动发现集群中的node节点
  • pod:自动发现运行的容器和端口
  • service:自动发现创建的serviceIP、端口
  • endpoints:自动发现pod中的容器
  • ingress:自动发现创建的访问入口和规则

05 Prometheus 监控 Kubernetes 部署实践

5.1 部署准备

案例仅在 master 节点 pull image

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_02

5.2 采用 daemonset 方式部署 node-exporter

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_03

5.3 部署 Prometheus

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_04

5.4 部署 grafana

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_05

5.5 校验测试

1)查看pod/svc信息

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_06

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_07

2)查看页面

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_08

访问 http://10.10.11.202:31672/metrics,这是 node-exporter 采集的数据。

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_09

访问 http://10.10.11.202:30003,这是 Prometheus 的页面,依次点击 Status>Targets 可以看到已经成功连接到 K8s 的 apiserver。

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_10

访问 http://10.10.11.202:30931,这是 grafana 的页面,账户、密码都是 admin。

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_11

5.6 grafana 模版配置

1)添加数据源,点击add,点击 Prometheus

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_12

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_13

2)依次进行设置,这里的URL需要注意:

URL需要写成,service.namespace:port 的格式,例如:

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_14

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_15

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_16

3)导入K8S Dashboard  模板

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_17

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_18

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_19

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_20

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_21

4)name 自定义,uid 可以为空,会自己生成,然后选择数据源,选择刚才创建的Prometheus,最后点击 import

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_22

5)效果图展示

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_23

06 yaml配置文件

6.1 node-exporter.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_24

6.2 rbac-setup.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_25

6.3 configmap.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_26

6.4 prometheus.deploy.yml

高效部署:基于 Prometheus 的云原生监控,用完真香_数据_27

6.5 prometheus.svc.yml

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_28

6.6 grafana-deploy.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_29

6.7 grafana-svc.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_服务发现_30

6.8 grafana-svc.yaml

高效部署:基于 Prometheus 的云原生监控,用完真香_数据源_31

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月07日   12   0   0 数据乐观锁redis
  jnZtF7Co41Wg   2023年12月09日   15   0   0 客户端服务端数据
8NpFq6F8GNVm