Debido a que LXD ya no es parte de Linux Containers project las imagenes como Rocky Linux ya no estan presentes en sus repositorios para su uso, en su lugar se
sugiere el uso de Incus. Se tiene una nueva guia usando K3s en Incus aqui:
La Instalación de un clúster con 6 nodos en LXD para pruebas de servicios de un SOC me llevó más tiempo
de lo esperado y despues de resolver varios (y estresantes problemas) por fin pude conseguir un clúster funcional usando Microk8s. Aquí los pasos:
Requisitos previos
Es necesario tener LXD instalado en el equipo host en mi caso usé la versión que viene en Snap ya que contiene una interfaz web para facilitar la administración de los contenedores. la instalación de LXD
dependerá de la distribución Linux que se esté usando, la guia de instalación de la interfaz web se encuentra aquí.
Como minimo se necesita 8GB de Ram para un clúster de 3 nodos si se requiere más nodos el sistema podría ponerse inestable.
Instalación de Rocky Linux en LXD
Una vez instalado LXD se instalará el nodo maestro (master) donde se realizará todas las configuraciones necesarias y posteriormente se creará los otros nodos a partir de este contenedor.
Primero se debe descargar el perfil especial creado para correr Microk8s en LXD, existen dos versiones de este perfil, dependiendo el sistema de archivos que tenga nuestra instalación de Linux en el host
para EXT4 usar este y para ZFS usar este
Agregar este perfil (en este ejemplo para EXT4) a un proyecto de LXD en la sección “Profiles” para este clúster se creó el proyecto kubeTest como se muestra en la imagen:
Una vez agregado el perfil procedemos a crear el contenedor con Rocky Linux en la sección “Instances” y presionando el boton “Create Instance” las siguientes imagenes muestran este proceso:
Por que Rocky Linux?
Rocky Linux es una versión gratuita de Red Hat por lo que su rendimiento como servidor es excelente. todos los pasos descritos posteriormente pueden ser ajustados a cualquier otra distribución Linux.
Siguiendo estos pasos ya deberíamos tener Rocky Linux instalado en LXD.
Agregar un usuario no root, instalar Open SSH y nfs-utils en el contenedor
Es importante agregar un usuario no root para administrar Microk8s:
Si es necesario agregar una clave publica al archivo .ssh/authorized_keys
Verificamos el estado de Microk8s:
1
$ microk8s status
Creación de un snapshot
En la sección Snapshots del nodo master crearemos un snapshot que se usará para crear los otros nodos del clúster previamenete debemos apagar el contenedor:
Hasta este punto la sección “Instances” debe mostrar todos los contenedores LXD:
En la terminal del nodo Master como usuario node escribimos el comando:
1
$ microk8s add-node
La ejecución de este comando genera una clave unica. Esta clave debe ejecutarse en un único nodo. Por lo tanto, se deben generar diferentes claves para cada nodo.
Ejecutamos el siguiente comando en el nodo master para verificar el estado del clúster:
1
$ microk8s kubectl get no
y deberíamos tener una lista de todos los nodos que conforman el clúster
Desde este punto solo queda desplegar servicios eso se verá en los siguientes posts.