Dashboards de Kubernetes 2

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.

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:

Dashboards de Kubernetes 2 1

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.

Dashboards de Kubernetes 2 2

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.

Dashboards de Kubernetes 2 3

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

Dashboards de Kubernetes 2 4

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.

Dashboards de Kubernetes 2 5

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

Dashboards de Kubernetes 2 6

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.

Dashboards de Kubernetes 2 7

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.

Dashboards de Kubernetes 2 8

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.

Dashboards de Kubernetes 2 9

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

Dashboards de Kubernetes 2 10

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.

Dashboards de Kubernetes 2 11

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.

Dashboards de Kubernetes 2 12

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

Dashboards de Kubernetes 2 13

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.

Dashboards de Kubernetes 2 14

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.

Volver arriba