kubernetes通过loki-stack完成整个集群分布式日志的收集,可以通过关键字进行检索日志,实现分布式高可用的日志方案。
kubernetes的资源监控方案是Prometheus普罗米修斯。
撤销k8s-master污点,让节点参与调度:
kubectl describe node k8s-master
kubectl taint nodes k8s-master node-role.kubernetes.io/master:NoSchedule-
Prometheus是一个开源的系统监控和告警工具,使用时序数据库。时序数据库横轴是时间,纵坐标是数据值。
cAdvisor是一个猫头鹰logo的软件,用来检测、分析和展示单节点容器性能指标和资源监控的可视化工具。监控包括内存使用率、CPU使用率、网络io、磁盘io以及文件系统使用情况,利用linux的Cgroup获取容器和本机的资源使用情况,同时提供一个web界面用来查看容器的实时运行状态。
kubernetes/kube-state-metrics获取k8s资源的最新状态,列如Deployment或者Daemonset。
Metrics Server从api-Server获取cpu、内存使用率信息,为hpa 、kubectl等组件提供决策指标支持。安装了Metrics Server之后,可以执行kubectl top命令。
grafana是一个监控仪表系统,它是由grafana labs公司开源的一个系统监测工具。grafana支持多种不同的数据源,每个数据源都有一个特定的查询编辑器。它就可以协助生成各种可视化的仪表,同时它还有报警功能,可以在系统出现问题时发出通知。它不支持数据的存储,只能从别的数据源上获取数据,获取到指标。它把指标通过人性化和应用化的图形界面,给用户去展示,Grafana就是一个纯GUI,它可以对接prometheus,对接Zabbix ,对接Loki等,都可以通过服务去获取指标。
Alertmanager主要用于接收prometheus发送的告警,它支持丰富的告警渠道。而且很容易做到告警信息的去重、降噪、分组和策略路由,是一款前卫的告警通知系统。它支持发邮件,对接微信和钉钉等告警功能。
去重就是把持续时间内的重复故障,只发一次。
降噪就是把重复性的信息通过分组的方式,把它给屏蔽掉。
策略路由就是把发送过来的报警器打上标签,通过标签的方式分到不同的分组下,不同的分组由不同组的管理员去处理。
prometheus监控服务是一个超级好的告警服务框架,数据存储端放在prometheus里面,数据的报警通过alertmanager去做到,数据的展示通过grafana去做到。数据的收集,有官方发布的node_exporter,我们可以通过golang、java、python去开发自己的暴露接口。
可以用Daemonset的方式部署node_exporter,这样可以在每个物理机上运行有且只有一个pod,node_exporter的作用是收集每个物理机上的重大监控指标。这些监控指标被prometheus所捕获,然后存储。存储完成后,需要查看就要对接Grafana。通过PromSQL查询语句,也就是prometheus普罗米修斯的查询语言进行图片的展示。
grafana也是通过deployment控制器去实现部署的,好处是相当稳定了。如果Grafana的pod挂掉之后,那么deployment控制器可以启动一个新的pod,prometheus也是通过deployment的方式去实现部署的。
prometheus➕Grafana➕alertmanager这套监控平台,也可以通过prometheus-operator的框架部署出来。
configmap可以打开热更新,–web.enable-lifecycle,使用命令是curl -X POST http://$svc_ip:9090/-/reload
在kubernetes下,prometheus通过kubernetes api集成,目前支持五种服务发现模式:Node、Service、Pod、Endpoints、Ingress。
kubectl meteics 默认接口是10250端口,也就是node自动发现监控的默认端口。
grafana添加prometheus数据源,点击设置后,点击Data Sources,添加上新的数据源。
Metrics server是集群核心监控数据的聚合器,可以监控容器CPU和内存使用率,为集群中的控制器Horizontal Pod Autoscaler提供决策,并且资源使用情况的监控通过Metrics API的形式去获取,这些度量可以由用户直接访问,用户可以通过kubectl top命令去访问。
kubectl 、k8s dashboard、scheduler通过调用api server,接着api server去调用heapster metrics-server ,metrics-server 调用kubelet(cAdvisor),cAdvisor调用cgroup去获取监控数据。
安装完metrics server,就可以使用kubectl top node $node_name ,或者使用kubectl top pod $pod_name -n $namespace_name 去查看节点和pod的资源使用情况了。

古树
鼓励的话语:低谷时的每一步,哪怕向前挪动一小步,都比站在原地更有意义!
















暂无评论内容