Kubernetes监控(Heapster)

2017-04-01  本文已影响2190人  殷临风

当我们搭建好集群之后, 其运行状况是我们非常关心的, 能否用在生产环境, 而k8s也为我们提供相关的监控, 让我们可以时刻关注Pod运行状况, 以便可以按自己的需要扩容. 这里我们主要介绍heapster + influxdb + grafana方案

1. Heapster

负责收集pod各项指标, 比如cpu, 内存, 网络等.

# 运行 yaml 文件
kubectl create -f http://res.yinnote.com/kubernetes/heapster/1.5.1/heapster-rbac.yaml
kubectl create -f http://res.yinnote.com/kubernetes/heapster/1.5.1/influxdb/heapster.yaml

这个yaml文件是我从github下载并上传到我自己的资源服务器上, 修改了里面的镜像地址. 由于相关的镜像在google服务器, 我将其构建在阿里云上, 以便在国内能够使用

可以通过下列命令查看服务

kubectl get svc -n kube-system 

可以通过下列命令查看`Pod`` 是否运行

kubectl get po -n kube-system 

详细介绍, 大家可以关注官方Github: https://github.com/kubernetes/heapster

如果大家前面安装了kube-dashboard, 可以在dashboard的后台看到相关的cpu和内存的情况

2. InfluxDB

这个是存储pod信息相关的数据库, heapster获取数据之后, 可以指定存储在InfluxDB

kubectl create -f http://res.yinnote.com/kubernetes/heapster/1.5.1/influxdb/influxdb.yaml
3. Grafana

这个主要是用于显示InfluxDB里面的数据情况, 可以让我们很直观看到数据变化

kubectl create -f http://res.yinnote.com/kubernetes/heapster/1.5.1/influxdb/grafana.yaml

针对grafana.yaml文件, 我除了修改镜像地址外, 还指定了其对外暴露的端口号31235, 以便我们后续好配置

这个时候, 我们的服务应该是这样的, 注意我用红圈的, 后续我们可能会使用到:

4. 访问

如果一切没问题的话, 请求地址http://yinnote.com:31235最后看到的结果应该是这样:

默认情况下, grafana是不需要密码的, 但如果我们想修改里面的配置, 就需要登录, 默认的账号密码是 admin, admin

官方Github文档也有详细的介绍, 大家也可以参考一下
https://github.com/kubernetes/heapster/blob/master/docs/influxdb.md

后记

一般而言, 很多公司都会有自己的监控系统, 我们没有必要再起一个grafana服务, 更没有必要新建一个influxdb, 只要把通过heaspter获取的数据存到我们自己的influxdb就行了

# 下载并打开 heaspter
cd /opt
wget http://res.yinnote.com/kubernetes/heapster/1.5.1/influxdb/heapster.yaml
vi heaspter.yaml
# 修改sink地址
#####################################################
spec:
  serviceAccountName: heapster
  containers:
  - name: heapster
    image: registry.cn-hangzhou.aliyuncs.com/magina-k8s/heapster-amd64:v1.3.0
    imagePullPolicy: IfNotPresent
    command:
    - /heapster
    - --source=kubernetes:https://kubernetes.default
    - --sink=influxdb:http:/yinnote.com:8086?user=k8s&pw=xxxxxx&db=k8s
#####################################################
# 使配置生效
kubectl apply -f heaspter.yaml

将参数--sink指定为自己的influxdb地址. 为了安全, 最好设置认证信息, 另外influxdb也需要创建k8s相关的db, 并设置认证信息

上一篇下一篇

猜你喜欢

热点阅读