cover

INTRO

En este post, te guiaré en la instalación de k3s en un clúster de Raspberry utilizando Ansible. Además, configuraremos un disco compartido por NFS que permitirá almacenar datos persistentes, yo usé un seagate de 6 Tb pero cualquiera funciona bien.

Requisitos previos

  • 4 Raspberry Pi 3 de 8GB con Raspbian o Debian instalado (yo usé Debian 10) y configurado en cada uno de ellos. (yo hice mi cluster con 4 pero es totalmente opcional, puedes hacer un singlenode y no pasa nada,pero recomiendo esa cantidad de nodos para todos los deployments que vamos a meter a continuacion en las siguientes partes de esta serie de posts.
  • Ansible instalado en tu máquina local.
  • Una red local (y algo de conocimiento en networking básico) en la que puedas conectar tus Raspberry Pi y tu máquina local.

Paso 1: Configurar las direcciones IP estáticas

Para que el clúster funcione correctamente, necesitamos configurar direcciones IP estáticas en cada Raspberry Pi.

Para hacerlo, abre el archivo /etc/dhcpcd.conf en cada Raspberry Pi y agrega las siguientes líneas al final del archivo:

interface eth0
static ip_address=<ip-address>/24
static routers=<gateway-ip>
static domain_name_servers=<dns-server-ip>

Reemplaza <ip-address>, <gateway-ip> y <dns-server-ip> con los valores correspondientes de tu red local. Asegúrate de configurar una dirección IP diferente en cada Raspberry Pi.

Recomendado: tener un server DNS interno (hay muchos opensource), así en el inventario de Ansible vas a poder meter los nombres directamente en lugar de las IPs

Paso 2: Clonamos el repo K3s-Ansible

Clona el repositorio de k3s-ansible en tu máquina local ejecutando el siguiente comando:

git clone https://github.com/k3s-io/k3s-ansible.git

Este repositorio contiene los playbooks de Ansible necesarios para instalar k3s en nuestro clúster.

Paso 3: Ansible Ansible y mas Ansible

Reemplazamos el file de inventario (hosts.ini) con los valores de nuestras maquinitas

ini

y le damos con todo al enter en el comando:

ansible-playbook site.yml -i inventory/my-cluster/hosts.ini

Ansible va a comenzar a repartir magia en nuestros pequeños pero poderosos servers

ini

(en la imagen ven los skips porque ya tengo el cluster instalado)

Un posible error que puede suceder es que al ejecutar tareas relacionadas a la instalacion en las raspis pueda llegar a solicitar sudo en algun momento (ademas de la pass que se configura en la conf de Ansible) en ese escenario es muy util la flag become pass, como se muestra a continuacion

ini

Paso 4 (opcional): Configurar el disco SSD compartido

Conectar el SSD al nodo master en puerto USB3.0 (azul)

Buscar el nombre del disco (fdisk)

pi@yngwie-master:~ $ sudo fdisk -l

Creamos una particion

pi@yngwie-master:~ $ sudo mkfs.ext4 /dev/sda

Montamos

pi@yngwie-master:~ $ sudo mkdir /mnt/ssd
pi@yngwie-master:~ $ sudo chown -R pi:pi /mnt/ssd/
pi@yngwie-master:~ $ sudo mount /dev/sda /mnt/ssd

Agregamos la info a FSTAB (para persistir el montaje)

pi@yngwie-master:~ $ sudo vi /etc/fstab

Listo por hoy, en la proxima parte mostraremos como compartir el SSD del master por NFS hacia los nodos, así posteriormente van a poder compartir espacio de almacenamiento para guardar los volumes k8s

Fuente

Material Extra: Curso “Devops en 5 Pasos” Disponible en Udemy

Temas:

  • Docker
  • Kubernetes
  • MultiCloud (AWS - Azure - GCP)
  • IaC (Terraform, Cloud Formation, ARM Templates, Cloud Resource Manager)
  • CI/CD Pipelines (GitlabCI, Azure Devops, CircleCI)

Descripción completa: Detalle y enlaces del curso

Invitame un CaféInvitame un Café