Use Heapster as an in-built monitoring solution for Kubernetes in GCE.

Users will have an option to enable it when they setup their cluster (kube-up).
This commit is contained in:
Vishnu Kannan 2014-11-06 19:35:33 +00:00
parent 4759040360
commit b3d542e966
4 changed files with 114 additions and 0 deletions

52
monitoring/README.md Normal file
View File

@ -0,0 +1,52 @@
Heapster
===========
Heapster enables monitoring of Kubernetes Clusters using [cAdvisor](https://github.com/google/cadvisor). It currently works only on GCE.
#####Run Heapster in a Kubernetes cluster with an Influxdb backend and [Grafana](http://grafana.org/docs/features/influxdb)
**Step 1: Setup Kube cluster**
Fork the Kubernetes repository and [turn up a Kubernetes cluster](https://github.com/GoogleCloudPlatform/kubernetes-new#contents), if you haven't already. Make sure kubectl.sh is exported.
**Step 2: Start a Pod with Influxdb, grafana and elasticsearch**
```shell
$ kubectl.sh create -f deploy/influx-grafana-pod.json
```
**Step 3: Start Influxdb service**
```shell
$ kubectl.sh create -f deploy/influx-grafana-service.json
```
**Step 4: Update firewall rules**
Open up ports tcp:80,8083,8086,9200.
```shell
$ gcutil addfirewall --allowed=tcp:80,tcp:8083,tcp:8086,tcp:9200 --target_tags=kubernetes-minion heapster
```
**Step 5: Start Heapster Pod**
```shell
$ kubectl.sh create -f deploy/heapster-pod.json
```
Verify that all the pods and services are up and running:
```shell
$ kubectl.sh get pods
```
```shell
$ kubectl.sh get services
```
To start monitoring the cluster using grafana, find out the the external IP of the minion where the 'influx-grafana' Pod is running from the output of `kubectl.sh get pods`, and visit `http://<minion-ip>:80`.
To access the Influxdb UI visit `http://<minion-ip>:8083`.
#####Hints
* Grafana's default username and password is 'admin'. You can change that by modifying the grafana container [here](influx-grafana/deploy/grafana-influxdb-pod.json)
* To enable memory and swap accounting on the minions follow the instructions [here](https://docs.docker.com/installation/ubuntulinux/#memory-and-swap-accounting)

View File

@ -0,0 +1,18 @@
{
"id": "heapster",
"kind": "Pod",
"apiVersion": "v1beta1",
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "heapster",
"containers": [{
"name": "heapster",
"image": "kubernetes/heapster",
}]
}
},
"labels": {
"name": "heapster",
}
}

View File

@ -0,0 +1,34 @@
{
"id": "influx-grafana",
"kind": "Pod",
"apiVersion": "v1beta1",
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "influx-grafana",
"containers": [{
"name": "influxdb",
"image": "kubernetes/heapster_influxdb",
"ports": [
{"containerPort": 8083, "hostPort": 8083},
{"containerPort": 8086, "hostPort": 8086},
{"containerPort": 8090, "hostPort": 8090},
{"containerPort": 8099, "hostPort": 8099}]
}, {
"name": "grafana",
"image": "kubernetes/heapster_grafana",
"ports": [{"containerPort": 80, "hostPort": 80}],
"env": [{"name": HTTP_USER, "value": admin},
{"name": HTTP_PASS, "value": admin}],
}, {
"name": "elasticsearch",
"image": "dockerfile/elasticsearch",
"ports": [{"containerPort": 9200, "hostPort": 9200},
{"containerPort": 9300}],
}]
},
},
"labels": {
"name": "influxdb",
}
}

View File

@ -0,0 +1,10 @@
{
"id": "influx-master",
"kind": "Service",
"apiVersion": "v1beta1",
"port": 8085,
"containerPort": 8086,
"provider": "kubernetes-default",
"component": "influxdb"
"selector": { "name": "influxdb" }
}