安装监控插件

在 Kubernetes 集群中,可以通过安装 Heapster 插件来统计整个集群的资源使用情况,并通过集成 InfluxDB 数据库来存储监控数据以及 Grafana 控制台来提供数据分析和可视化界面,通过这三者的搭配使用,则可以实现对集群的资源使用情况的监控。

⚠️ 需要注意的是,上面三个插件只是并不负责 数据的采集 工作,数据的采集是依靠 Kubelet 组件中的名为 cAdvisor 的 agent 来完成的,Heapster 会主动请求所有的 cAdvisor 来获取所需数据,如下图:

cAdvisor 从运行的 Node 中采集资源使用情况

Heapster 以 Pod 的形式运行在某个 Node 中,通过 Service 暴露服务,使外部可以通过一个稳定的 IP 地址访问。它从集群中所有的 cAdvisor 汇集数据,然后通过一个单独的地址暴露。使用了 InfluxDB 后,它会将汇集的所有监控数据都存储在其中,然后 Grafana 会以该数据库为数据源,将数据可视化展出。

安装三个插件

首先从 Github 中下载相关源码,源码中有相关的 YAML 配置文件,这些配置文件需要进行相应的修改才可以正常使用:

上面的三个 YAML 文件分别对应了三个插件

安装 Heapster

在使用 YAML 配置文件安装前,需要对该配置文件进行相应的修改,主要有以下四处:

  1. 将 Deployment 的 apiVersion 改为 apps/v1

  2. 将 Deployment 的 spec.selector 手动指定,否则创建会验证报错;

  3. 为 Heapster 使用的 ServiceAccount 授权,否则会出现类似 403 Forbidden", response: "Forbidden (user=system:serviceaccount:kube-system:heapster, verb=create, resource=nodes, subresource=stats)" 这类的无权限提示;

  4. 修改 Heapster 应用的启动参数,否则会出现类似 Error in scraping containers from kubelet:192.168.10.77:10255: failed to get all container stats from Kubelet URL "http://192.168.10.77:10255/stats/container/": Post http://192.168.10.77:10255/stats/container/: dial tcp 192.168.10.77:10255: getsockopt: connection refused 的错误;

修改后的 YAML 配置文件内容如下:

相对于原文件:

  1. 添加了 7 - 18 行;

  2. 修改了第 20 行;

  3. 添加了 27 - 30 行;

  4. 修改了第 44 行;

安装 Influxdb

在使用相应 YAML 配置文件安装之前,同样对配置文件进行了相应修改,主要有两处:

  1. 将 Deployment 的 apiVersion 改为 apps/v1

  2. 将 Deployment 的 spec.selector 手动指定,否则创建会验证报错;

修改后的 YAML 配置文件如下:

相对于原文件:

  1. 修改了第 1 行;

  2. 添加了第 8 - 11 行;

安装 Grafana

在使用相应 YAML 配置文件安装之前,同样对配置文件进行了相应修改,主要有三处:

  1. 将 Deployment 的 apiVersion 改为 apps/v1

  2. 将 Deployment 的 spec.selector 手动指定,否则创建会验证报错;

  3. 将用于暴露其服务的 Service 的类型修改为 NodePort 类型,便于用户从集群外部访问;

修改后的 YAML 配置文件如下:

相对于原文件:

  1. 修改了第 1 行;

  2. 添加了第 8 - 11 行;

  3. 修改了第 71 行;

打开 Grafana 界面

通过查看 Grafana 的 Service 监听的端口,就可以打开相应的 Web 界面:

如上述结果,则 Grafana 的地址为 http://<集群任意 Node 的 IP 地址>:31906

打开界面后,默认情况下的初始界面是没有任何数据的,需要用户手动排版并导入数据,如下:

初始界面

幸运的是,Grafana 中有许多用户提供了丰富的预先配置好的 Dashboard,可以直接导入使用,这里我们使用下述的三个链接将相关配置先下载好:

下载完成后,得到下面三个文件:

Dashboard 配置文件

然后可以在 Grafana 中将配置文件依次导入,并指定数据源为 InfluxDB 即可,下面展示一个导入 Pod 的 Dashboard 的例子:

点击 Import

然后点击右上方的绿色按钮 Upload .json file,选择 pods_rev1.json 文件,进入下一步。

选择数据源为 InfluxDB

点击 Import 后,就可以得到下面的展示图了:

Pod 资源监控效果图

其他两个 Dashboard 的导入过程与 Pod 的类似,这里就不再做详细解释。

Last updated

Was this helpful?