vlambda博客
学习文章列表

通过 kube-prometheus 监控 k8s | 运维进阶

分享者:曹如熙,上海逸橙网络科技有限公司,高级运维leader。具有超过十年的互联网运维及五年以上团队管理经验,多年容器云的运维,尤其在Docker和kubernetes领域非常精通。


K8s监控需要考虑以下几方面:

  • Kubernetes节点的监控:node节点的cpu、负载、内存、硬盘等指标

  • 内部系统组件的状态:kube-scheduler、kube-controller-manager、kubedns/coredns等组件的运行状态

  • metrics:Deployment的状态、资源请求、调度和API延迟等数据指标

Kube-prom的组成如下

通过 kube-prometheus 监控 k8s | 运维进阶

1. node-export监控

我们使用prometheus来监控k8s node状态和性能,采集节点的监控指标,可以通过node_exporter获 取,node_exporter就是抓取用于采集服务器节点的各种运行指标,目,比如cpu、distats、loadavg、meminfo、netstat等。

使用DeamonSet控制器来部署该pod,这样每一个节点都会运行一个Pod,如果我们从集群中删除或添加节点后,也会进行自动扩展,

node-exporter.yaml样例如下:

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

执行kubectl get pod -n monitoring  -o  wide 或oc get pods -n openshift-monitoring  -o  wide(关于OpenShift命令行,本小节不再赘述)

通过 kube-prometheus 监控 k8s | 运维进阶

可以查到node-exporter的pod状态在k8s节点上, curl 127.0.0.1:9100/metrics,可以获取到数据,说明成功收集

配置node-exporter-service.yaml 

通过 kube-prometheus 监控 k8s | 运维进阶

输入kubectl get svc -n monitoring  -o  wide  |grep  node

输出以下

通过 kube-prometheus 监控 k8s | 运维进阶

表示service配置完成

2. kube-state-metrics

kube-state-metrics本质上是不断轮询api-server,kube-state-metrics关注于获取k8s各种资源的最新状态,如deployment或者daemonset,而kube-state-metrics是将k8s的运行状况在内存中做了个快照,并且获取新的指标。

配置kube-state-metrics-deployment.yaml样式

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

配置  kube-state-metrics-service.yaml api

通过 kube-prometheus 监控 k8s | 运维进阶

查看pod和svc

kubectl get pod -n monitoring  -o  wide  |grep  state 

kubectl get svc -n monitoring  -o  wide  |grep  state

通过 kube-prometheus 监控 k8s | 运维进阶

检查状态是否正常

3. grafana监控

我们使用grafana展示kube-prom的信息状态监控

grafana-deployment.yaml样式如下:

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶

通过 kube-prometheus 监控 k8s | 运维进阶
grafana-service.yaml样式如下:
通过 kube-prometheus 监控 k8s | 运维进阶

查看grafana  service  pod

kubectl get  pod,svc  -n  monitoring  -o  wide  |grep   grafana

通过 kube-prometheus 监控 k8s | 运维进阶

访问grafana后台,浏览器访问http://ip:23000/login

(可以去grafana官网搜寻需要监控的模板)

通过 kube-prometheus 监控 k8s | 运维进阶

可以查看k8s容器的内存,CPU等资源的使用率

通过 kube-prometheus 监控 k8s | 运维进阶

可以查看有问题的容器副本

在alert里面可以配置报警规则

通过 kube-prometheus 监控 k8s | 运维进阶

可以配置pod宕机发送报警

觉得本文有用,请 转发、点赞 或点击“ 在看 ”,让更多同行看到

以上内容是课程《容器云平台的日常巡检》其中一个小节,完整课程非常全面实用,详见以下介绍,可以直接点击阅读原文,免费下载全文PDF进行系统学习。


课程名称:《容器云平台的日常巡检》
课程出品人:曹如熙,上海逸橙网络科技有限公司, 高级运维leader。具有超过十年的互联网运维及五年以上团队管理经验,多年容器云的运维,尤其在docker和kubernetes领域非常精通。2020容器云职业技能大赛百位专家委员会成员。
课程简介:近年来,容器技术的发展非常迅猛,以容器和kubernetes为代表的容器云技术日新月异,但我们也在容器的使用过程中碰到各种困扰和难题。本文着重介绍容器和kubernetes集群的日常巡检工作,希望可以帮助到大家去快速定位问题并解决问题想要了解容器和容器云巡检工作,我们首先要了解容器查看方式。早期容器引擎较多使用dockerengine,目前K8S和开源社区在主推CRIO。前者的运维使用docker命令,后者运维使用podman命令。两者的参数是一样的。
课程内容:

1  docker容器日常巡检

1.1  docker  ps查看容器状态

1.2  docker原生健康检查—HealthCheck

1.2.1  通过docker  run或者dockerfile添加健康检查

1.2.2  输出健康检查状态

1.3  docker  stats查看容器状态

1.4  通过第三方工具监听容器

1.4.1  prometheus介绍

1.4.2  cadvisor介绍

1.4.3  grafana介绍

1.5  docker容器的日志检查

2  Kubernetes日常巡检

2.1 检查master

2.1.1  kubectl/oc检查master状态

2.1.2  kubectl/oc  logs检查master日志

2.2  检查node

2.2.1  kubectl/oc检查node状态

2.2.2  kubectl/oc  logs检查node日志

2.3  检查service

2.4  检查pod

2.4.1  kubectl/oc检查pod状态

2.4.2  kubectl/oc  logs检查pod日志

2.5  pod  health健康检测

2.6 通过dashborad检查

2.7  通过kube-prometheus监控k8s

2.7.1  node-export监控

2.7.2  kube-state-metrics

2.7.3  grafana监控

2.8  kubernetes日志收集

2.8.1  原生方式log

2.8.2daemonset方式--Node上部署log  agent

2.8.3  sidecar方式:通过sidecar容器收集日志

3  总结


通过 kube-prometheus 监控 k8s | 运维进阶


下载 twt 社区客户端 APP

通过 kube-prometheus 监控 k8s | 运维进阶

或到应用商店搜索“twt”