Soy Oscar Mas y los sistemas tradicionales de monitorización como pueden ser Nagios, Zabbix, etc… pueden llegar a ser un dolor de cabeza cuando monitorizamos un sistema que crece en función de la demanda o disminuye en función de nuestras necesidades. Para ello existen varios sistemas de monitorización que gestionan perfectamente Kubernetes. Uno de ellos puede ser Prometheus, el cual es tan potente como complejo. El sistema de monitorización que os voy a enseñar, es bastante sencillo de deplegar y cumple con todas nuestras necesidades. Este sistema esta basado en Heapster, el cual se encarga de recoger la información de nuestro nodo y por tanto necesitaremos tantos Heapster como equipos de nodo tengamos, en nuestro caso necesitaremos dos: uno para el ub-nodo1-sbd y otro para el ub-nodo2-sbd. Heaspter le pasa la información que recopila a InfluxDB y esta la almacena. Grafana se encarga de recoger la información de InfluxDB y mostrárnosla en un Dashboard.
Lo primero que haremos es descargaremos los yaml que viene preconfigurados, para poder desplegar todos los servicios del sistema de monitorización:
rootdevel@ub-nodo0-sbd:~$ wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml rootdevel@ub-nodo0-sbd:~$ wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml rootdevel@ub-nodo0-sbd:~$ wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml rootdevel@ub-nodo0-sbd:~$ wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
Modificaremos el fichero de Grafana, para poder acceder a la administración del propio Grafana. Para ello editaremos el fichero de “grafana.yaml” y descomentaremos la línea: “type: NodePort”, tal como se muestra en la captura:
rootdevel@ub-nodo0-sbd:~$ vim grafana.yaml
Una vez realizado el cambio, ya podemos desplegar todos los yaml’s y como siempre verificaremos que no haya ningún error en el despliegue:
rootdevel@ub-nodo0-sbd:~$ kubectl create -f . rootdevel@ub-nodo0-sbd:~$ kubectl get pods --namespace=kube-system
Una vez verificado que todo funciona correctamente, buscaremos el puerto que nos ha asignado para poder acceder a la administración de Kubernetes:
rootdevel@ub-nodo0-sbd:~$ kubectl describe service monito--namespace=kube-system | grep NodePort:
Por defecto solamente nos ha desplegado un Heapster en nuestra plataforma, pero a consecuencia de tener dos servidores que realizan las funcionalidades de nodo, es indispensable desplegar un Heapster más. Recordar que este es el que se encarga de recoger la información de lo que hay en cada nodo y enviárselo al InfluxDB
rootdevel@ub-nodo0-sbd:~$ kubectl get deployment -n kube-system |grep heapster heapster 1 1 1 1 4m rootdevel@ub-nodo0-sbd:~$ kubectl scale -n kube-system --replicas=2 deployment heapster deployment "heapster" scaled rootdevel@ub-nodo0-sbd:~$ kubectl get deployment -n kube-system |grep heapster
Y ahora ya podremos acceder a la administración de Grafana, mediante el puerto que nos visto con anterioridad. Os dejo un par de capturas de pantalla:

Pero esto no es todo. Si queremos acceder a la BBDD de InfluxDB, es necesario instalarnos el cliente en uno de los servidores, para ello he escogido el servidor master (ub-nodo0-sbd), al cual le he añadido el repositorio de InfluxDB y he instalado el cliente de la siguiente manera:
rootdevel@ub-nodo0-sbd:~$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
rootdevel@ub-nodo0-sbd:~$ source /etc/lsb-release
rootdevel@ub-nodo0-sbd:~$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
deb https://repos.influxdata.com/ubuntu xenial stable
rootdevel@ub-nodo0-sbd:~$ sudo apt-get update && sudo apt-get install -y influxdb
Ahora para poder accede a la BBDD de InfluxDB, necesitamos saber la IP interna que esta usando y el puerto que nos ha asignado. Esto lo realizaremos de la siguiente forma:
rootdevel@ub-nodo0-sbd:~$ kubectl get services -n kube-system | grep influxdb
Y ya podremos acceder a la BBDD de nuestro Influxdb:
Durante mi trabajo con este sistema, me he percatado que al borrar los pods de nuestro sistema, no se borran de la BBDD de InfluxDB, para ello tendremos que acceder a la BBDD como he mostrado anteriormente y borrarlos a mano o mediante un script. Para realizarlo, simplemente hemos de lanzar el siguiente comando:
rootdevel@ub-nodo0-sbd:~$ influx -host 10.107.198.21 -port 8086 Connected to http://10.107.198.21:8086 version unknown InfluxDB shell version: 1.3.7 > use k8s > SHOW SERIES WHERE pod_name = 'nginx-drfw7' > DROP SERIES WHERE pod_name = 'nginx-drfw7’ > SHOW SERIES WHERE pod_name = 'nginx-drfw7'
Donde ‘nginx-drfw7’ es el nombre del pod que hemos eliminado.
No te pierdas la serie completa sobre Kubernetes de Oscar Mas:
- Kubernetes – Introducción a Kubernetes
- Kubernetes – Instalación
- Kubernetes – RollingUpdate con Kubernetes
- Kubernetes – Dashboard
- Kubernetes – Volúmenes NFS
- Kubernetes – Registry
- Kubernetes – Traefik
- Kubernetes – Systemd con Traefik y Proxy de Kubernetes
- Kubernetes – Heapster Influx Grafana
- Kubernetes – Labels de Kubernetes
- Kubernetes – API: Swagger
- Kubernetes – API: Creando nuestro primer POD
- Kubernetes – API: Seguridad con Token


Hola
Quisiera preguntarle, ¿qué sucede si el maestro Kubernetes falla?
Saludos