Proyecto kubernetes cluster raspberry pi

Hace unos días, hablando con un compañero de trabajo, me comentó que estaba montando un cluster de k8s, para hacer pruebas y montar todo un entorno, desde la integración continua hasta el mismo control de versiones.

Me pareció una buena forma de hacer un laboratorio de pruebas incluso desplegar este blog en ese cluster, por eso me he decido a montar un cluster de Raspberry Pi 4 e instalar k8s.

PRIMEROS PASOS

Después de recibir el pedido en casa, lo primero es disfrutar el unboxing, eso no se pierde…

Primero de todo bajarte el SO, que quieres instalar y aquí tienes varias opciones, las cuales no voy a nombrar. Yo directamente opte por un ubuntu server, que ya está preparado para ser montado en una SD: https://ubuntu.com/download/raspberry-pi

Cuando ya tienes la imagen, tienes que volcarla dentro de la SD, aconsejan como mínimo una de 4gb, yo opté por una de 128 a 190mb/s.

En Ubuntu tienes un tutorial, donde te presentan su propia herramienta para volver la imagen dentro de la SD: https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#2-prepare-the-sd-card

Hice un par de intento y elegir descargar la imagen me dio bastantes problemas, por lo tanto me baje la imagen a manos (arm64), seleccione la SD y le día a write. Con estos simples pasos ya debería estar la SD lista para ser insertada en tu PI.

Tener muy presentes que la arquitectura es arm.

Puesta a punto de la Raspberry Pi

Si queremos montar un cluster de Kubernetes y para evitar problemas en un futuro con la gestión de la propia ip del manager (en mi caso esta raspberry), configuré el router asignando a la mac de mi rasp una ip concreta. Esto es muy concreto de cada router/switch, así que, tú mismo para buscar información del tema.

Realmente no es necesario, tener un conector a un monitor, en mi caso, no tengo y no quería esperar a que llegará para configurar el master. Por lo tanto, antes de conectar a la red la rasp, lanza el comando:

arp -a

Esto te devolverá el listado de IP de tu red, por lo tanto cuando conectes tu rasp, aparecerá la mac/ip a la cual te puedes conectar.

Después de mi primera conexión, cambie el hostname por hydra en /etc/hostname, una tontería como cualquier otra. También eliminé el usuario “ubuntu” que viene por defecto y estoy bastante seguro que se puede modificar en los archivos de la SD, una vez escrito el contenido.

En cualquier caso puedes crear un usuario nuevo:

sudo useradd -m -s /bin/bash usuarionuevo

Después de eso añadimos el usuario a sudores, para darle los poderes!

usermod -aG sudo usuarionuevo

Estos pasos te los puedes ahorrar, ya que puedes ir tirando con el ubuntu, pero por seguridad me gusta cambiar el usuario por defecto y borrarlo

sudo userdel –remove-home ubuntu

Qué tenemos en este punto ?. Tenemos nuestra rasp funcionando, con un usuario nuestro y una ip fija otorgada por el router/switch.

Si tenéis algún problema con los updates y os dice que ya esta siendo usado apt-get update, seguramente será porque ya se esta actualizando. Si entráis en esta dirección:

/etc/apt/apt.conf.d/20auto-upgrades

Veréis que las actualizaciones por defecto están activadas, vosotros mismos

Instalando el primer nodo y a su vez manager

Realmente poco tengo que decir de esto, en : https://kubernetes.io/docs/setup/production-environment/container-runtimes/

Tenéis que tener varias consideraciones, otra vez, la arquitectura es arm no amd, por lo tanto cuando aparezcan cosas como:

Debéis cambiar el amd, por arm.

Otra parte que no esta muy bien explicada a no ser que conozca un poco como van las variables del entorno en linux, es:

cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /
EOF
cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /
EOF

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -

sudo apt-get update
sudo apt-get install cri-o cri-o-runc

En esta parte antes de ejecutar la lists de comandos debería hacer:

export OS=loquesea
export VERSION=1.18

Sin esto tendréis problemas.

Dentro de esta guía ya instalaréis todo lo necesario para tener el primero nodo de vuestro cluster.

Siguientes pasos

Este pos ha sido mas bien un comentario muy por encima de los pasos que he seguido para montar mi primer nodo, seguramente el siguiente post, documente paso a paso lo que hice para el siguiente nodo.

Deja una respuesta

A %d blogueros les gusta esto: