监控k8s的主流方案是prometheus+grafana两大套件,为了快速部署并监控k8s,目前有两款主流grafana插件提供给了我们方案
本文环境是二进制部署的k8s
集群,prometheus
和grafana
通过yaml
部署(非operator)
# kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:40:16Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
# kubectl get pods -n kube-system -l k8s-app=prometheus
NAME READY STATUS RESTARTS AGE
prometheus-0 2/2 Running 0 1m
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 1m
Grafana Kubernetes App
可监控Kubernetes集群的性能。它包括4个仪表板,即集群,节点,Pod
/容器和部署。它允许自动部署所需的Prometheus
导出器,并使用默认的scrape
配置与您的集群内Prometheus
部署一起使用。收集的指标是高级集群和节点统计信息,以及较低级别的pod
和容器统计信息。使用高级指标进行警报,使用低级指标进行故障排除。
要求
目前仅支持Prometheus
为了自动部署exporter
,则需要Kubernetes 1.6
或更高版本。
Grafana 5.0.0+
特征
Kubernetes
标签来过滤Pod
指标。Kubernetes
集群往往有很多Pod
和很多Pod
指标。Pod / Container
仪表板利用了pod
标签,因此可以轻松找到相关的pod
。exporter
,从Grafana
一键式部署,或使用kubectl
手动部署Heapster
中不可用的群集级别指标,例如CPU
容量与CPU
使用率。集群指标
节点指标
Pod/容器指标
进入pod
或者将插件离线下载后上传到/var/lib/grafana/plugins
目录
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 123m
# kubectl -n kube-system exec -it grafana-0 bash
bash-5.0$ grafana-cli plugins install grafana-kubernetes-app
installing grafana-kubernetes-app @ 1.0.1
from: https://grafana.com/api/plugins/grafana-kubernetes-app/versions/1.0.1/download
into: /var/lib/grafana/plugins
✔ Installed grafana-kubernetes-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
提示需要重启服务,此处直接删除pod
,让其重新拉起即可
# kubectl -n kube-system delete pods grafana-0
重新访问grafana界面查看插件列表,找到kubernetes
插件并启用
选择创建集群
配置项如下
api-server
的地址TLS Client Auth
和With CA Cert
k8s
的认证信息,这里我们可以新建一个kubeconfig
文件也可以沿用kubectl
使用的kubeconfig
文件,在kubeconfig
文件中的内容使经过base64
编码后的,在这里需要将这些内容解码,类似echo "key内容" | base64 -d
kubeconfig
中的certificate-authority-data
kubeconfig
中的client-certificate-data
kubeconfig
中的client-key-data
prometheus
prometheus
的配置及部署node_exporter
,这里已经部署过了,就不再部署了如上图所示,填写完后点击Save
,然后等待一会儿查看是否成功
按照上面的操作成功配置后,插件会自动在grafana
中添加多个实用的dashboard
,下图展示其中一个
DevOpsProdigy KubeGraf
是一个非常优秀的Grafana Kubernetes
插件,是Grafana
官方的Kubernetes
插件的升级版本,该插件可以用来可视化和分析Kubernetes
集群的性能,通过各种图形直观的展示了Kubernetes
集群的主要服务的指标和特征,还可以用于检查应用程序的生命周期和错误日志。
要求
要安装使用 DevOpsProdigy KubeGraf
插件需要满足以下要求:
Grafana
> 5.0.0 版本Kubernetes
集群上部署Prometheus + node-exporter + kube-state-metrics
Grafana-piechart-panel
插件特征
该插件包含3个主要的信息页面,其中包含有关Kubernetes
集群的详细信息
应用概述 该插件可以显示 Kubernetes 集群上面的应用的一些基本监控信息
集群状态
节点概述
Dashboards
除了在插件主页上提供了常见的信息之外,该插件还提供了另外5个Dashboard
供我们来跟踪集群的各种性能指标
Dashboard
,它可以显示资源的使用情况,例如CPU
利用率、内存消耗、空闲/iowait
模式下的CPU
时间百分比以及磁盘和网络的状态Pod
来显示对应的资源使用情况Deployment
为维度来显示对应的资源对象相关的资源使用情况Statefulset
为维度来显示对应的资源对象相关的资源使用情况Daemonset
为维度来显示对应的资源对象相关的资源使用情况上面三个Dashboard
显示了可用/不可用的应用程序的副本数量以及这些应用程序的容器状态,还会跟踪容器的重启
进入pod
或者将插件离线下载后上传到/var/lib/grafana/plugins
目录
# kubectl get pods -n kube-system -l app=grafana
NAME READY STATUS RESTARTS AGE
grafana-0 1/1 Running 0 130m
# kubectl -n kube-system exec -it grafana-0 bash
bash-5.0$ grafana-cli plugins install devopsprodigy-kubegraf-app
installing devopsprodigy-kubegraf-app @ 1.3.0
from: https://grafana.com/api/plugins/devopsprodigy-kubegraf-app/versions/1.3.0/download
into: /var/lib/grafana/plugins
✔ Installed devopsprodigy-kubegraf-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
bash-5.0$ grafana-cli plugins install Grafana-piechart-panel #按照前面的提示如果没有安装Grafana-piechart-panel插件也需要安装
installing Grafana-piechart-panel @ 1.5.0
from: https://grafana.com/api/plugins/Grafana-piechart-panel/versions/1.5.0/download
into: /var/lib/grafana/plugins
✔ Installed Grafana-piechart-panel successfully
Restart grafana after installing plugins . <service grafana-server restart>
提示需要重启服务,此处直接删除pod
,让其重新拉起即可
# kubectl -n kube-system delete pods grafana-0
同样的,重新访问grafana
界面查看插件列表,找到DevOpsProdigy KubeGraf
插件并启用
点击 Set up your first k8s-cluster
创建一个新的Kubernetes
集群
配置和Kubernetes App
插件一样,这里不再赘述,如图所示