Dashboards de Kubernetes 1

Uno de los principales problemas al empezar a trabajar con Kubernetes es la falta de herramientas comprensibles sobre Kubernetes. Los dashboards de kubernetes (las herramientas de gestión de la plataforma) se convierten en el punto de entrada para muchos que quieren aprender Kubernetes.

En esta serie de articulos vamos a examinar algunos de los dashboards más usados, inluyendo algunos más específicos (octant, kontena) y dejando aquellos orientados a PaaS/CaaS (Rancher, Openshift) ya que en ambos casos se sobrepasa el alcance de herramientas de entrada a Kubernetes.

Dashboards de Kubernetes

Kubernetes Dashboard

Con más de 6000 estrellas en GitHUb, el dashboard oficial de Kubernetes es la opción estándar de este tipo de soluciones, a causa de las dependencias del mismo y su falta de compatibilidad con las versiones actuales de Kubernetes nos vamos a centrar en las versión v2-beta3.

Como se instala

Ejecutando el comando:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta3/aio/deploy/recommended.yaml

Se instala en el espacio de nombre “kubernetes-dashboard” y para obtener las métricas utiliza el servicio “dashboard-metrics-scraper” que se instala en el mismo espacio de nombres.

Se debe acceder vía IP external (servicio LoadBalancer o kubectl proxy), o configurar un Ingress con los mismos certificados SSL que la consola (lo que complica su despliegue).

Los contenedores que forman parte de esta solución son:

docker.io/kubernetesui/dashboard                  v2.0.0-beta3        6feddba9df747       32MB
docker.io/kubernetesui/metrics-scraper          v1.0.1               709901356c115       16.1MB

Por lo que su despliegue ha de ser rápido, ya que aunque son dos servicios son de reducido tamaño.

Características

Dispone de un interfaz limpio y claro, autenticación por token y un cuadro de mandos donde a un lado tenemos todos los elementos principales de Kubernetes y en la parte principal del panel una lista de los elementos seleccionados en el nombre de espacios seleccionado.

Panel principal:

Dashboards de Kubernetes 1 1

Por comodidad dispone de un tema oscuro, de los elementos a los que permite acceder tenemos los roles de seguridad. Además cada elemento seleccionado dispone de dos acciones: editar y eliminar.

Edición de roles:

Dashboards de Kubernetes 1 2

La acción editar nos da acceso al objeto que define el elemento seleccionado en formatos yaml o json. En ningún elemento hay definido un editor especifico que permita la gestión del objeto para los no conocedores de su estructura.

Dashboards de Kubernetes 1 3

Información del nodo:

Cuando seleccionamos un nodo nos vuelca una gran cantidad de información sobre el mismo.

Dashboards de Kubernetes 1 4

Panel de control sobre un espacio de nombres:

Al seleccionar un espacio de nombre sin seleccionar ningún elemento nos mostrará un cuadro de estado de dicho espacio de nombre con los elementos que lo forman y el estado de cada uno de ellos.

Dashboards de Kubernetes 1 5

Información sobre un elemento:

La información es también exhaustiva cuando entramos en cualquier objeto, en esta caso un servicio:

Dashboards de Kubernetes 1 6

Manipulación de secrets:

En algunos objetos como los secretos nos permite visualizar los datos de los mismos:

Dashboards de Kubernetes 1 7

Configuración de CRD:

Uno de los elementos del menú lateral son los CRD, en donde podemos encontrar aquellos objetos definidos por aplicaciones como puede ser el sistema de paquetes Helm. Dispone de una opción que fija el CRD al menu permitiendo un rápido acceso al mismo.

Dashboards de Kubernetes 1 8
Dashboards de Kubernetes 1 9

Configuración del panel de control:

Por último dispone de una sección de configuración donde entre otros elementos está la configuración del modo oscuro.

Dashboards de Kubernetes 1 10

Facilidad de uso

El interfaz es claro y accesible, pero es complicado el acceso a los registros generados por los pods y los eventos del sistema. Se echa en falta una herramienta de configuración de los elementos más precisa.

No puede ponerse detrás de un ingress que haga de terminador SSL ya que requiere el mismo certificado que el dashboard y eso requiere una configuración más específica.

No muestra gráficos de las relaciones entre los objetos, algo deseable para un dashboard.

K8dash

Con 400 estrellas K8dash se nos presenta con un formato visual parecido al del dashboard oficial de Kubernetes, con dos diferencias principales: más espacio al evitar un menú de texto y que tanto eventos como registros aparecen asociados a los objetos.

Como se instala

Depende de metrics server por lo que primero instalaremos dicho servicio, aprovecharemos helm para ello (usamos helm v3 beta3):

cat <<EOF |helm install -f - -n kube-system metrics-server stable/metrics-server
args:
  - --kubelet-insecure-tls
  - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
EOF

Creamos un espacio de nombres para instalar k8dash:

kubectl create namespace k8dash --dry-run -o yaml | kubectl apply -f -

Creamos una cuenta de sistema con capacidades de administrador

kubectl create -n k8dash serviceaccount k8dash-sa --dry-run -o yaml | kubectl apply -f -
kubectl create clusterrolebinding k8dash-sa --clusterrole=cluster-admin --serviceaccount=k8dash:k8dash-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 k8dash -f -
 ---
apiVersion: v1
kind: Service
metadata:
  name: k8dash
  namespace: k8dash
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 4654
  selector:
    app: k8dash
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: k8dash
  name: k8dash
spec:
  replicas: 1
  selector:
    matchLabels:
      app: k8dash
  template:
    metadata:
      labels:
        app: k8dash
    spec:
      serviceAccountName: k8dash-sa
      containers:
      - image: herbrandson/k8dash:latest
        name: k8dash
        ports:
        - containerPort: 4654
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /
            port: 4654
          initialDelaySeconds: 30
          timeoutSeconds: 30
      nodeSelector:
        'beta.kubernetes.io/os': linux

Los contenedores de los dos servicios que conforman esta solución son:

docker.io/herbrandson/k8dash latest 7ad7ade9f7eac 38.2MB
gcr.io/google_containers/metrics-server-amd64 v0.3.5 abf04c0f54ff9 10.5MB

Por lo que su despliegue ha de ser rápido, ya que ambos servicios son de reducido tamaño.

Características

Para acceder al dashboard se requiere el token de la cuenta de servicio que hemos creado anteriormente (se puede obtener con: kubectl -n k8dash get secret `kubectl -n k8dash get secret|grep ^k8dash|awk '{print $1}'` -o jsonpath="{.data.token}"|base64 -d ) y no permite ningún otro tipo de autenticación.

Al no configurarse el despliegue con una capa SSL no se recomienda su publicación directa sino a través de ingress que haga de terminador SSL (en nuestro caso hemos realizado el despliegue basado en lo explicado en Como publicar Kubernetes con External DNS, MetalLB y Traefik. por lo que está configurado tras su propio dominio.

Panel principal:

Dashboards de Kubernetes 1 11

Podemos ver un interfaz limpio, sin exceso de información y que va directo a mostrar valores numéricos y un panel de eventos que se actualiza en automáticamente.

Igualmente en los nodos vemos una disposición parecida, y una breve descripción del nodo. Se hecha de menos que los gráficos sean más compactos, ya que se podría reducir el número a tres ahorrando espacio.

Dashboards de Kubernetes 1 12

Los objetos muestran el mismo diseño, es importante observar que al igual que con el dashboard oficial, K8dash dispone de dos opciones para todos los objetos (editar y eliminar) y algunos disponen de características añadidas, en este caso, un deployment, puede verse la opción de escalar.

Dashboards de Kubernetes 1 13

Vamos la descripción de un volumen persistente

Dashboards de Kubernetes 1 14

Y de un secreto, al igual que para el dashboard oficial nos da la opción de mostrar las claves.

Dashboards de Kubernetes 1 15

Y la configuración de roles es también del estilo del dashboard oficial

Dashboards de Kubernetes 1 16

Facilidad de uso

K8dash es un dashboard basado visualmente en el oficial, con carencias importantes como no mostrar los CRD, o un modo oscuro. Pero a cambio es visualmente más limpio y todos los objetos muestran los eventos relacionados.

Tanto el dashboard original como K8dash son herramientas que permitirán a aquellos que empiezan en el universo Kubernetes a iniciarse en los objetos básicos, en el siguiente artículo pasamos a examinar aquellos dashboards más específicos y orientados a mostrar información no generalista.

Volver arriba