Tras un primer artículo (Dashboards de Kubernetes 1) sobre Dashboards de Kubernetes generalistas, este artículo se centra en aquellos dashboards que están orientados a ciertas necesidades.
Concretamente nos centraremos en tres dashboards que van a tres necesidades: Ver el estado de un gran número de pods, ver las relaciones entre objetos y obtener una visión de conjunto sobre una plataforma kubernetes sobre docker.
Table of Contents
Dashboards de Kubernetes
Kube-ops-view
Con 1200 estrellas en Github este proyecto nos presenta un dashboard muy básico pensando en grandes granjas de servidores, en donde tengamos un importante volumen de pods que necesitemos revisar de un vistazo.
Como se instala
Creamos un espacio de nombres para instalar kube-ops-view:
kubectl create namespace kube-ops-view --dry-run -o yaml | kubectl apply -f -
Creamos una cuenta de sistema con capacidades de administrador
kubectl create -n kube-ops-view serviceaccount kube-ops-view-sa --dry-run -o yaml | kubectl apply -f -
kubectl create clusterrolebinding kube-ops-view-sa --clusterrole=cluster-admin --serviceaccount=kube-ops-view:kube-ops-view-sa --dry-run -o yaml | kubectl apply -f -
Y realizamos la ejecución de un despliegue junto con un servicio para su publicación
cat <<EOF |kubectl apply -n kube-ops-view -f -
---
apiVersion: v1
kind: Service
metadata:
name: kube-ops-view
namespace: kube-ops-view
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
selector:
app: kube-ops-view
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: kube-ops-view
name: kube-ops-view
spec:
replicas: 1
selector:
matchLabels:
app: kube-ops-view
template:
metadata:
labels:
app: kube-ops-view
spec:
serviceAccountName: kube-ops-view-sa
containers:
- image: hjacobs/kube-ops-view:0.11
name: kube-ops-view
ports:
- containerPort: 8080
Pese a ser un único servicio (sin autenticación, importante) su contenedor tiene un tamaño parecido al de las soluciones anteriormente mostradas:
docker.io/hjacobs/kube-ops-view 0.11 fd70a70b6d70d 40.8MB
Por lo que su despliegue ha de ser rápido.
Características
Su interfaz, mostrado en la siguiente figura es mínimo:

Sin opciones de entrar en los objetos o de editar, la información aparece al pasar por encima de las “cajas”.
Facilidad de uso
Claramente limitado para el que se inicia en Kubernetes o quiere información adicional sobre los objetos, pero muy útil para el que quiere visualizar de golpe grandes volúmenes de pods.
Kubeview
Aunque con solo 150 estrellas en github, este proyecto se centra en representas las relaciones entre objetos en Kubernetes. Siendo muy interesante para demostraciones.
Como se instala
Hasta que se desarrolle el Helm Chart (https://github.com/benc-uk/kubeview/tree/master/deployments/helm) Se instala en el espacio de nombre “default” instalando dos ficheros:
kubectl apply -f https://raw.githubusercontent.com/benc-uk/kubeview/0.1.8/deployments/service-account.yaml
kubectl apply -f https://github.com/benc-uk/kubeview/blob/0.1.8/deployments/deploy.yaml
El primer fichero incluye la cuenta de usuario kubeview y los permisos correspondientes, el segundo el despliegue junto con un servicio tipo “LoadBalancer”.
El tamaño de la imagen es pequeño y su despliegue es rápido.
docker.io/bencuk/kubeview latest cb6456b6cbcf7 16.1MB
Características
Kubeview es simple y su configuración gráfica lo hacen muy interesante para enseñar Kubernetes o presentaciones. Su menú está unicamento conformado por un selector de espacio de nombre y un tiempo de refresco de la ventana.

Cuando seleccionamos un espacio de nombres nos va a mostrar todos los objetos que dicho espacio de nombres posee. De está manera podemos de un solo vistazo ver las relaciones y elementos como las IPs de publicación de los servicios.

Cuando seleccionamos un objeto (por ejemplo un servicio) muestra información descriptiva del mismo.

Facilidad de uso
Muy básico y con funciones limitadas a formación o demostración. No tiene mayores pretensiones, las cuales son mostrar las relaciones entre objetos.
Weave-Scope
Este interesante proyecto tiene 3700 estrellas en github. Pretende ser una herramienta que cubra todos los elementos posibles en un despliegue con docker como runtime y weave como gestor de red.
Como se instala
Aprovecharemos helm para desplegarlo (usamos helm v3 beta3):
kubectl create namespace weave-scope
cat <<EOF |helm install -f - -n weave-scope weave-scope stable/weave-scope
service:
type: "LoadBalancer"
EOF
Utiliza tres imágenes diferentes para desplegar tres tipos de servicios, uno es la consola, el segundo un agente de monitorización del cluster y el tercero es un agente de monitorización de los nodos, pero que tiene una fuerte dependencia con docker que veremos afecta a los resultados en entornos que no son docker.
Características
El menú está distribuido por la pantalla y no hace referencia directa a los objetos de Kubernetes, comenzamos por los nodos y dispone de la interesante característica de mostrar información sobre los mismos sin requerir de múltiples circulos.

Al seleccionar un nodo podemos obtener información detallada del mismo.

Dispone de una opción del menú para mostrar los nodos de Kubernetes con Weave aunque no he podido obtener más información que la mac del nodo.

En el otro lado del menú tenemos la interesante opción de procesos, que muestra un estado global de todos los mismos, en este caso que hay pocos es interesante (para formación o demostración) pero no se identifica como útil para un entorno en producción.

Si seleccionamos un espacio de nombre y le indicamos que nos muestre los pods podemos tener una mala noticia, no soporta containerd. Ya que está pensado especialmente en la API de Docker, utilizar un runtime directamente (CRI-O o Containerd) no nos permite acceder a la información de los contenedores, lo que es una importante limitación en entornos que no sean Docker Enterprise.

Esta limitación se ve claramente en el menú Containers, donde efectivamente no se muestra información.

Cuando seleccionamos un pod nos aparece una descripción del mismo y tres opciones, la primera es mostrar los logs, la segunda es editar el código del pod y el tercero es eliminarlo.

El problema en los pods multicontenedor es que solo nos muestra los logs del contenedor inicial, y no logs de los otros contenedores que forman el pod.

En el caso de los deployments muestra las opciones para escalar y editar (y no para eliminar)

Por último reseñar una interesante capacidad que existe que consiste en poder abrir una shell desde la web en los nodos del servicio. Aunque fuera de un entorno de demostración dicha capacidad es más una inseguridad.

Facilidad de uso
Pese a su prometedor diseño, la dependencia de docker lo convierte en una opción de nicho que no se puede llevar a la mayoría de soluciones basadas en Kubernetes, ya que estás usan como runtime containerd o CRI-O.
En el último artículo de está pequeña guía examinamos aquellos dashboards que no van a funcionar como un elemento integrado en Kubernetes sino como elementos externos con acceso a los recursos como son octant y kontena.