通过 kube-prometheus 监控 k8s | 运维进阶
分享者:曹如熙,上海逸橙网络科技有限公司,高级运维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
输出以下
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 pod
kubectl get pod,svc -n monitoring -o wide |grep grafana
访问grafana后台,浏览器访问http://ip:23000/login
(可以去grafana官网搜寻需要监控的模板)
可以查看k8s容器的内存,CPU等资源的使用率
可以查看有问题的容器副本
在alert里面可以配置报警规则
可以配置pod宕机发送报警
觉得本文有用,请 转发、点赞 或点击“ 在看 ”,让更多同行看到
以上内容是课程《容器云平台的日常巡检》其中一个小节,完整课程非常全面实用,详见以下介绍,可以直接点击阅读原文,免费下载全文PDF进行系统学习。
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 总结
下载 twt 社区客户端 APP
或到应用商店搜索“twt”