Sigo con el troubleshooting del cuelgue de los nodos sobre Raspberry Pi 3 del clúster.

Ayer estuve haciendo limpieza siguiendo vagamente la recomendación de esta respuesta en el hilo Kubernetes memory consumption explosion.

La solución de RenaudWasTaken al problema de consumo excesivo de memoria (32GB) fue la realizar limpieza de las carpetas:

  • /var/run/kubernetes
  • /var/lib/kubelet
  • /var/lib/etcd

Antes de empezar a borrar a lo loco, revisé el contenido de estas carpetas.

/var/run/kubernetes

En /var/run/kubernetes:

$ ls -la /var/run/kubernetes/
total 8
drwxr-xr-x  2 root root   80 May  5 18:43 .
drwxr-xr-x 18 root root  600 May  5 18:43 ..
-rw-r--r--  1 root root 1082 May  5 18:43 kubelet.crt
-rw-------  1 root root 1679 May  5 18:43 kubelet.key

Estos ficheros son certificados, por lo que no parecen implicados en el problema y decido no borrarlos.

/var/lib/kubelet

Nodo k2

Al intentar listar el contenido de la carpeta /var/lib/kubelet/pods, la Raspberry Pi 3 ha tardado una eternidad (en los primeros intentos he creído que había dejado de responder).

Finalmente, el resultado del comando ha mostrado una gran cantidad de carpetas dentro de esta carpeta:

$ ls -la /var/lib/kubelet/pods
...
drwx------    2 root root    4096 May  4 23:11 wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_flannel-cfg.deleting~443381808.deleting~108562981.deleting~938554959.deleting~743974077.deleting~207819844.deleting~559419937.deleting~142152710.deleting~494766199.deleting~952339001
drwx------    2 root root    4096 May  5 18:02 wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_flannel-cfg.deleting~443381808.deleting~108562981.deleting~938554959.deleting~743974077.deleting~274346355.deleting~274250693.deleting~987962315.deleting~680794233.deleting~917929467
drwx------    2 root root    4096 May  4 23:37 wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_flannel-cfg.deleting~443381808.deleting~108562981.deleting~938554959.deleting~743974077.deleting~274346355.deleting~292131322.deleting~049606881.deleting~105942520.deleting~463246644
drwx------    2 root root    4096 May  4 22:46 wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_flannel-cfg.deleting~443381808.deleting~119491600.deleting~962328406.deleting~220005477.deleting~309794961.deleting~392355244.deleting~378832104.deleting~159122214.deleting~324365539
drwx------    2 root root    4096 Apr 15 20:39 wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_wrapped_flannel-cfg.deleting~443381808.deleting~162549394.deleting~296869341.deleting~353223099.deleting~018715754.deleting~526835026.deleting~320404022.deleting~453576282.deleting~001809150
...

Parece como si algo no hubiera funcionado correctamente y hubiera entrado en un bucle, creando carpetas y más carpetas. Además, en el nombre de alguna de estas carpetas aparece ..._flannel-cfg.... Esta ha sido la pista que me ha convencido; al intentar instalar el dashboard de Kubernetes, tuve problemas precisamente porque no tengo instalado Flannel. Eliminé el pod y no le di más vueltas.

Sin embargo, la existencia de estas carpetas parece indicar que la eliminación no fue tan limpia como pensaba y que algo se quedó atrapado en un bucle.

He lanzado rm -rf /var/lib/kubelet/pods/ y el comando ha fallado indicando que uno de los pods estaba en uso. Así que he eliminado poco a poco los pods hasta que al final:

$ ls /var/lib/kubelet/pods/ -la
total 24
drwxr-x--- 4 root root 12288 May  5 18:40 .
drwxr-x--- 4 root root  4096 Apr 15 09:08 ..
drwxr-x--- 5 root root  4096 May  5 18:43 c0323b0f-31bd-11e7-a0ed-b827eb650fdb
drwxr-x--- 5 root root  4096 May  5 18:43 f2da9dfb-31bd-11e7-a0ed-b827eb650fdb

Estos pods, sean los que sean, están en uso (no tengo nada desplegado en el clúster, así que deben ser de sistema).

Tras la limpieza, he reiniciado el nodo.

Nodo k3

El nodo k3 no presentaba estas carpetas sospechosas, pero también he realizado limpieza:

$ rm -rf /var/lib/kubelet/pods/
rm: cannot remove ‘/var/lib/kubelet/pods/3a5e2819-21e5-11e7-bcfd-b827eb650fdb/volumes/kubernetes.io~configmap’: Directory not empty
rm: cannot remove ‘/var/lib/kubelet/pods/71290201-31bb-11e7-a0ed-b827eb650fdb/volumes/kubernetes.io~secret/kube-proxy-token-7zk2k’: Device or resource busy
rm: cannot remove ‘/var/lib/kubelet/pods/ef887c6a-31ba-11e7-a0ed-b827eb650fdb/volumes/kubernetes.io~secret/weave-net-token-61scv’: Device or resource busy
$

Igual que en el nodo k2, he reiniciado.

Resultados

Los nodos k2 y k3 siguen en estado Ready tras unas siete y ocho horas, que es bastante más de lo que aguantaban antes.

He comprobado que en la carpeta /var/lib/kubelet/pods sólo aparecen dos pods (en el nodo k2):

$ ls -la /var/lib/kubelet/pods/
total 24
drwxr-x--- 4 root root 12288 May  5 18:40 .
drwxr-x--- 4 root root  4096 Apr 15 09:08 ..
drwxr-x--- 5 root root  4096 May  5 18:43 c0323b0f-31bd-11e7-a0ed-b827eb650fdb
drwxr-x--- 5 root root  4096 May  5 18:43 f2da9dfb-31bd-11e7-a0ed-b827eb650fdb
$

En el nodo k3:

$ ls -la /var/lib/kubelet/pods/
total 28
drwxr-x--- 5 root root 12288 May  5 19:44 .
drwxr-x--- 4 root root  4096 Apr 15 14:10 ..
drwxr-x--- 3 root root  4096 May  5 19:33 3a5e2819-21e5-11e7-bcfd-b827eb650fdb
drwxr-x--- 5 root root  4096 May  5 19:37 514d4c93-31c9-11e7-a0ed-b827eb650fdb
drwxr-x--- 5 root root  4096 May  5 19:37 c0b9753a-31c9-11e7-a0ed-b827eb650fdb
$

Más adelante actualizaré el artículo para verificar si los nodos siguen activos y sin problemas.