高效部署:基于 Prometheus 的云原生监控,用完真香?

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

04 服务发现

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

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

05 Prometheus 监控 Kubernetes 部署实践

5.1 部署准备

案例仅在 master 节点 pull image

5.2 采用 daemonset 方式部署 node-exporter

5.3 部署 Prometheus

5.4 部署 grafana

5.5 校验测试

1)查看pod/svc信息

2)查看页面

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

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

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

5.6 grafana 模版配置

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

2)依次进行设置,这里的URL需要注意:
URL需要写成,service.namespace:port 的格式,例如:

3)导入K8S Dashboard  模板

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

5)效果图展示

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。

点个“在看”,一年不宕机

标签

发表评论