Kubernetes监控(Heapster)
当我们搭建好集群之后, 其运行状况是我们非常关心的, 能否用在生产环境, 而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
下载并上传到我自己的资源服务器上, 修改了里面的镜像地址. 由于相关的镜像在
可以通过下列命令查看服务
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
, 并设置认证信息