Un DataCenter en tu Escritorio con K3s - Parte 1 Instalación de K3s con Ansible
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
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
(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
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