Los contenedores son útiles en muchos proyectos informáticos, ya sea para alojar servicios de software libre, desarrollar programas dentro de entornos aislados o experimentar con paquetes y repositorios divertidos. Pero cuando se ha implementado un ejército de contenedores, administrarlos puede volverse una verdadera molestia.

Ahí es donde las plataformas de orquestación de contenedores comoKubernetesresultan útiles con sus funciones de monitoreo, automatización, escalado automático y balanceo de carga. Mejor aún, ¡puedes armar un servidor Kubernetes confiable usando placas Raspberry Pi económicas!

Relacionado
Así es como se construye un clúster Proxmox

¿Por qué limitarse a un solo nodo cuando puede construir un clúster completo a partir de sus servidores Proxmox?

Lo que necesitarás para el clúster Kubernetes de Raspberry Pi

Si bien Kubernetes tiene requisitos de sistema bastante bajos, necesitarás al menos una Raspberry Pi 3 para obtener el rendimiento ideal al trabajar con servicios en contenedores. Para un clúster simple, puedes optar por dos Raspberry Pis. Pero si planeas ejecutar un clúster de alta disponibilidad, necesitarás al menos tres nodos para mantener el quórum.

Para maximizar el rendimiento, recomiendo elegir una distribución basada en CLI como Raspberry Pi OS Lite. Tenemos una guía sobrecómo configurar Raspberry Pi OSy el procedimiento general es más o menos el mismo para la versión Lite. Si estás usando Raspberry Pi Imager para preparar la tarjeta microSD, te recomiendo habilitar la opción SSH desde la pestaña Servicios.

(Opcional) Conexión a Raspberry Pi a través de SSH

Para Raspberry Pi OS Lite u otras distribuciones sin interfaz gráfica de usuario, puedes ejecutar un cliente SSH para ejecutar comandos en la SBC desde otra PC. PuTTY es nuestra aplicación favorita para este propósito y aquí te mostramos cómo configurarla en tu sistema:

  1. Descargue el archivosetup.exede PuTTY delsitio web oficialy úselo para instalar la herramienta en su PC.
  2. EjecutePuTTY.execomo administrador.
  3. Escriba ladirección IPde su Raspberry Pi en el campoNombre de host, asegúrese de que aparezca el número22enPuertoy toqueAbrir.
    Conexión a Raspberry Pi a través de SSH usando PuTTY
    Si no conoce la dirección IP de su RPi, puede hacerlo con la ayuda de una utilidad de escaneo de red comoFing.
  4. Aceptela huella digital SSH cuando PuTTY muestre la ventana emergentede Alerta de seguridad .
    Cómo aceptar la ventana emergente de alerta de seguridad en PuTTY
  5. Inicie sesión en Raspberry Pi con sunombre de usuarioycontraseña.

Modificación del archivo cmdline.txt para el clúster de Kubernetes

Antes de poder comenzar a instalar los paquetes de Kubernetes, deberá agregar algunos indicadores adicionales al archivo de configuracióncmdline.txtpara evitar que el kernel Linux de Raspberry Pi cause problemas al configurar el clúster.

  1. Utilice el editornanopara abrir el archivo/boot/firmware/cmdline.txt.
    sudo nano /boot/firmware/cmdline.txt
    Abrir el archivo cmdline.txt
  2. Introduzca las siguientes banderas al final de la primera línea:
    cgroup_memory=1 cgroup_enable=memoria
    Edición del archivo cmdline.txt
  3. PresioneCtrl+Xseguido deYyEnterpara guardar y salir del archivo.
  4. Utilice el comandode reiniciopara reiniciar su Raspberry Pi.
    sudo reiniciar
    Reiniciando la Raspberry Pi

Configuración de MicroK8s en Raspberry Pi

Hay muchas formas de implementar un servidor Kubernetes en tu Raspberry Pi, pero usaremos MicroK8s, que es fácil de instalar. Una vez que tu RPi haya terminado de reiniciarse,

  1. Instale el paquetesnapdejecutando este comando:
    sudo apt install snapd -y
    Instalación del paquete snapd
  2. UtiliceSnappara instalar MicroK8s en su SBC.
    sudo snap install microk8s --classic
    El comando para instalar MicroK8s
  3. Otorgue acceso completo al paquete MicroK8s a su usuario normal con el comandousermod.
    sudo usermod -a -G microk8s $USUARIO
    Ejecutando el comando usermod
  4. Ejecute el comandomkdirpara crear un nuevo directorio para sus paquetes de MicroK8s y usechmodpara permitir que su usuario principal acceda a este directorio.
    • mkdir -p ~/.kube
    • chmod 0700 ~/.cubo
      Usando el comando mkdir
  5. Utilice el comandosupara actualizar los permisos.
    su - $USER
    Ejecutando el comando su

Implementación del panel de control de MicroK8s

Si bien puede administrar su servidor Kubernetes con solo comandos de terminal, MicroK8s admite una extensiónde panelpara ayudarlo a acceder a sus contenedores dentro de una interfaz de usuario web conveniente. Para configurarlo,

  1. Inicie todos los pods MicroK8s con este comando:
    El comienzo de Microk8
    Ejecución de MicroK8s
  2. Ejecute el siguiente comando para habilitar el panel de MicroK8s.
    microk8s habilita el panel de control
    Habilitar el panel de control de MicroK8s
  3. Utilice el argumentoproxypara hacer accesible el panel.
    Proxy del panel de control de microk8s
    Ejecución del comando proxy del panel de control de MicroK8s
  4. Abra su navegador favorito y escriba ladirección IPde su Raspberry Pi seguida de dos puntos (:) y el número de puerto10443.
    Cómo acceder a la interfaz web del panel de control de Kubernetes
  5. Utilice el tokengenerado automáticamente desde la terminal para obtener acceso al panel de control.
    Iniciar sesión en el panel de control de MicroK8s

Configuración de Docker para el entorno de Kubernetes

Dado que Docker Hub posee una gran cantidad de imágenes de contenedores, puede configurar el paquete Docker para obtener imágenes para el clúster Kubernetes de Raspberry Pi.

  1. Inicie unasesión duplicadapara ejecutar el resto de los comandos.
    Iniciar una sesión duplicada dentro de PuTTY
  2. Descargue el paquetedocker.iodel repositorioapt.
    sudo apt install docker.io -y
    Instalación de Docker para un clúster de Kubernetes
  3. Dado que está trabajando dentro de una nueva instancia de terminal, ejecuteusermodpara otorgarle a su usuario acceso a los paquetes de Docker antes de usarsupara actualizar los permisos.
    • sudo usermod -aG docker ${USUARIO}
    • su - ${USER}
      Ejecutando los comandos usermod y su
  4. Obtenga sus imágenes de contenedor favoritas usando el comandodocker pull :
    docker pull nombre_imagen
    Extraer una imagen de Docker
  5. Habilite el registro de MicroK8s con este comando:
    microk8s habilitar registro: tamaño=20Gi
    Habilitar el registro en MicroK8s
  6. A continuación, tendrás que habilitar registros inseguros dentro del archivo de configuracióndaemon.json.
    sudo nano /etc/docker/daemon.json
    Ejecutando el archivo daemon.json
  7. Agregue el siguiente código en el archivo antes de presionarCtrl+X,YyEnterpara guardar los cambios.
    • {
    • "registros inseguros": ["localhost:32000"]
    • }
      Agregar registros inseguros al archivo de configuración daemon.json
  8. Reinicie Docker para aplicar los cambios.
    sudo systemctl reiniciar docker
    El comando para reiniciar Docker
  9. Etiquete la imagen de Docker y envíela al registro de MicroK8s.
    • etiqueta docker nombre_imagen localhost:32000/nombre_imagen
    • docker push localhost:32000/nombre_de_imagen
      Ejecución de la etiqueta Docker y comandos push
      Si el comandopushfalla, intenta habilitar el registro nuevamente usando este comando:
      microk8s habilita el registro
  10. Implemente un contenedor para la imagen de Docker usando el comandode creación de implementación:
    microk8s kubectl crea implementación nombre_contenedor --image=nombre_imagen
    Creación de un pod para una imagen de Docker
  11. Puede ejecutar el comandoget podspara verificar el estado de sus contenedores.
    Pods de obtención de microk8s kubectl
    Ejecutar el comando get pods

Creación de un clúster para Kubernetes

Hasta ahora, solo ha configurado Kubernetes en su Raspberry Pi y aún debe crear un clúster para la plataforma de orquestación de contenedores. Si planea usar el SBC actual como nodo maestro, deberá repetir todo el procedimiento en todas las demás placas Raspberry Pi. Una vez que haya configurado todo, aquí le mostramos cómo puede agregar los otros SBC como nodos adicionales para su entorno de Kubernetes:

  1. Cambie a su nodo maestro Raspberry Pi y ejecute este comando:
    nodo adicional microk8s
    Cómo agregar un nodo al clúster Raspberry Pi
  2. (Opcional) Para un clúster de alta disponibilidad, puede habilitar la extensiónha-clusterantes de agregar los otros nodos:
    microk8s enable ha-cluster
    Habilitación del clúster HA en MicroK8s
  3. Ejecute el comandode uniónseguido de los parámetros proporcionados por el nodo maestro en cada SBC:
    microk8s se une a la dirección IP del nodo maestro: 25000/cadena aleatoria 1/cadena aleatoria 2
    Unirse a un clúster de Kubernetes
  4. Puede confirmar si la conexión fue exitosa utilizando la palabra claveget nodes.
    microk8s kubectl obtiene nodos
    Ejecutar el comando obtener nodos

Administra tus contenedores como un profesional con un clúster Kubernetes de Raspberry Pi

Ejecución de un clúster de Kubernetes en una Raspberry Pi

Con eso, su clúster de Kubernetes está completamente operativo y usted es libre de modificar los contenedores a su gusto dentro del Dashboard. Si bien un clúster de K8s completo puede parecer un poco excesivo para una estación de trabajo autoalojada simple, es una excelente manera de administrar los aspectos más finos de suscontenedores. Además, puede otorgar una experiencia práctica invaluable que le resultará útil en su camino hacia DevOps y la administración de sistemas.

Relacionado
Intenté emular juegos de PS3 en Raspberry Pi

Si bien la Raspberry Pi 5 técnicamente puede ejecutar juegos de PS3, decir que son jugables sería demasiado generoso.

2