Added k3s

This commit is contained in:
Guillem Hernandez Sola
2026-01-30 09:44:36 +01:00
commit dd249fad69
5 changed files with 206 additions and 0 deletions

46
.gitignore vendored Executable file
View File

@@ -0,0 +1,46 @@
# Created by https://www.gitignore.io/api/macos,vagrant,visualstudiocode
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Vagrant ###
.vagrant/
*.box
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history
### Ansible ###
*.retry
# End of https://www.gitignore.io/api/macos,vagrant,visualstudiocode,ansible

63
README.md Normal file
View File

@@ -0,0 +1,63 @@
[![Agile611](https://www.agile611.com/wp-content/uploads/2020/09/cropped-logo-header.png)](http://www.agile611.com/)
# Start Using Kubernetes (k3s) with Vagrant
Aquest repositori mostra com desplegar un clúster lleuger de Kubernetes (k3s) usant Vagrant per a desenvolupament i proves ràpides.
**Prerequisits**
- Vagrant instal·lat
- Un provider de VM (VirtualBox, Parallels, o un provider suportat)
- `curl` i `ssh` disponibles
Consulteu el `Vagrantfile` per a configuracions específiques del provider.
**Ràpid Inici**
1. Arrancar les màquines amb Vagrant:
```bash
vagrant up
```
2. Comprovar l'estat del clúster (ssh a una màquina i utilitzar `kubectl` integrat):
```bash
vagrant ssh -c "sudo kubectl get nodes"
```
3. Parar i eliminar les màquines:
```bash
vagrant halt
vagrant destroy -f
```
**Detalls d'instal·lació**
Les instruccions d'instal·lació i els scripts utilitzats per configurar k3s estan a [install_k3s.txt](install_k3s.txt). Revisa aquest fitxer per entendre com s'instal·la i s'inicia k3s dins de les VM.
**Personalitzar**
Modifica el [Vagrantfile](Vagrantfile) per canviar la mida de la VM, la xarxa o el nombre de nodes.
**Contribucions i errors**
Obre un issue o envia un PR amb millores o problemes trobats.
# Support
This tutorial is released into the public domain by [Agile611](http://www.agile611.com/) under Creative Commons Attribution-NonCommercial 4.0 International.
[![License: CC BY-NC 4.0](https://img.shields.io/badge/License-CC_BY--NC_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc/4.0/)
This README file was originally written by [Guillem Hernández Sola](https://www.linkedin.com/in/guillemhs/) and is likewise released into the public domain.
Please contact Agile611 for further details.
* [Agile611](http://www.agile611.com/)
* Laureà Miró 309
* 08950 Esplugues de Llobregat (Barcelona)
[![Agile611](https://www.agile611.com/wp-content/uploads/2020/09/cropped-logo-header.png)](http://www.agile611.com/)

78
Vagrantfile vendored Normal file
View File

@@ -0,0 +1,78 @@
NUM_WORKER_NODES=2
IP_NW="192.0.3."
IP_START=10
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-24.04"
config.vm.box_check_update = true
config.vm.define "master" do |master|
master.vm.hostname = "master-node"
master.vm.network "private_network", ip: IP_NW + "#{IP_START}"
master.vm.provider "virtualbox" do |vb|
vb.memory = 4048
vb.cpus = 2
end
master.vm.provision "shell", path: "install_k3s.sh"
master.vm.network :forwarded_port, guest: 8001, host: 8001
master.vm.network :forwarded_port, guest: 6443, host: 6443
for i in 30000..32767
master.vm.network :forwarded_port, guest: i, host: i
end
end
(1..NUM_WORKER_NODES).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.hostname = "worker-node0#{i}"
node.vm.network "private_network", ip: IP_NW + "#{IP_START + i}"
node.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 1
end
end
end
end
# Configuració Global
NUM_WORKER_NODES = 2
IP_NW = "192.0.3."
IP_MASTER = "192.0.3.10" # Fixem la IP del Master per referenciar-la als workers
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-24.04"
config.vm.box_check_update = false
# --- Configuració del MASTER ---
config.vm.define "master" do |master|
master.vm.hostname = "master-node"
master.vm.network "private_network", ip: IP_MASTER
master.vm.provider "virtualbox" do |vb|
vb.memory = 2048 # Amb 2GB n'hi ha prou per K3s bàsic
vb.cpus = 2
end
# Ports importants (API i Ingress HTTP/HTTPS)
master.vm.network :forwarded_port, guest: 6443, host: 6443, id: "k8s-api"
master.vm.network :forwarded_port, guest: 80, host: 8080, id: "ingress-http" # Accedeix a les apps via localhost:8080
master.vm.provision "shell", path: "k3s_master.sh"
end
# --- Configuració dels WORKERS ---
(1..NUM_WORKER_NODES).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.hostname = "worker-node0#{i}"
node.vm.network "private_network", ip: IP_NW + "#{10 + i}"
node.vm.provider "virtualbox" do |vb|
vb.memory = 1024 # 1GB per worker
vb.cpus = 1
end
node.vm.provision "shell", path: "k3s_worker.sh"
end
end
end

9
k3s_master.sh Normal file
View File

@@ -0,0 +1,9 @@
echo "🚀 Instal·lant K3s Server (Master)..."
curl -sfL https://get.k3s.io | sh -s - --node-ip #{IP_MASTER} --flannel-iface eth1
echo "🔑 Guardant el Token a la carpeta compartida..."
# Copiem el token a /vagrant (que és la carpeta del teu PC) perquè els workers el vegin
sudo cp /var/lib/rancher/k3s/server/node-token /vagrant/node-token
sudo chmod 644 /vagrant/node-token
echo "✅ Master llest!"

10
k3s_worker.sh Normal file
View File

@@ -0,0 +1,10 @@
echo "⏳ Esperant que el Master generi el token..."
while [ ! -f /vagrant/node-token ]; do sleep 2; done
K3S_TOKEN=$(cat /vagrant/node-token)
NODE_IP=$(ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)
echo "🚀 Instal·lant K3s Agent (Worker) connectant a #{IP_MASTER}..."
curl -sfL https://get.k3s.io | K3S_URL=https://#{IP_MASTER}:6443 K3S_TOKEN=$K3S_TOKEN sh -s - --node-ip $NODE_IP --flannel-iface eth1
echo "✅ Worker unit al clúster!"