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宕机发送报警