查看原文
其他

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

twt社区 twt企业IT社区 2024-02-18

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


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

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

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

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

Kube-prom的组成如下

1. node-export监控

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

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

node-exporter.yaml样例如下:


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

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

配置node-exporter-service.yaml 

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

输出以下

表示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-state-metrics-service.yaml api

查看pod和svc

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

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

检查状态是否正常

3. grafana监控

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

grafana-deployment.yaml样式如下:

grafana-service.yaml样式如下:

查看grafana  service  pod

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

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

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

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

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

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

可以配置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  总结


此课程属于“2020 容器云职业技能大赛运维技术岗课程系列”,是针对“2020 容器云职业技能大赛”(大赛详情请点击此处了解>>>)专门打造的精品课程,该系列有18个课程,识别二维码即可前往下载学习,还可以进行自测考试,完成所有课程及自测可获得岗位结业证书。


下载 twt 社区客户端 APP


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

继续滑动看下一个

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

twt社区 twt企业IT社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存