Hace unas semanas empecé ha montar un cluster con tres raspberry pi4, he subido algunos post hablando de ello:
- instalando-kubernetes-en-raspberry-pi-4
- kubernetes-que-runtime-elegir-para-nuestro-cluster-en-raspberry-arm/
- single-page-application-en-kubernetes
Hoy os traigo una compilación, que podéis encontrar en repositorio: kuberetes-on-arm, en este repositorio podréis ver como instalar el cluster desde 0, con prácticamente todo en yaml o shell scripts
Docker bajo arquitectura ARM
Después de unas semanas estoy bastante contento con el avance, pero, seguramente iría más rápido si no fuera una arquitectura ARM, ja que muchas imágenes oficiales en el repositorio de Docker hub son sólo para arquitecturas AMD.
Esto es un problema, porque al no tener de imagen oficial, tenemos que confiar en la imagen que pueda subir la gente o incluso hacer una nuestra.
Pero, cómo hacemos una ?. No podemos simplemente hacerla desde nuestro equipo a no ser que tenga una arquitectura ARM, ja que al «construir» una imagen probablemente se construya utilizando el host como referencia AMD, por ello hay que entrar y generar las imágenes desde una rasp o pc con arquitectura ARM.
NFS y la seguridad
Otro problema que me he ido encontrando es el problema de tener sd y utilizar un ssd para guardar toda la información. Actualmente tengo un ssd montado en un nodo y compartido por nfs.
Estro trae otro problema, que es el uso de permisos. Muchas aplicaciones cómo por ejemplo gitlab, necesita cambiar los permisos de las carpetas para utilizarlas y eso en un directorio montado sin permisos de root es francamente complicado.
Muchas veces podemos utilizar que el usuario dentro del contenedor sea uno en concreto, pero el usuario y grupo de nuestro nfs siempre sera el mismo nouser:nogroup.
En conclusión, muchas imagenes/applicaciones, si tienen que trabajar con un fichero, comprueban su propietario y grupo, si estos no coinciden intentan cambiarlos, por ejemplo git y su configuración en HOME.
Resumen de la experiencia
Los dos principales problemas que me he encontrado es la arquitectura ARM y su poco «soporte», aunque al parecer esta creciendo este soporte y las imágenes que se suben a dockerhub últimamente tienen más compatibilidad
Ficheros montados como NFS, este a sido el principal problemas por el cual he tenido que buscar alternativas creativas siempre respetando y no dando permisos de root en el ordenador que contiene la carpeta compartida