K3s
K3s est une distribution de Kubernetes conçue pour être légère et simple à installer, ce qui la rend particulièrement adaptée pour les environnements avec des ressources limitées.
Qu'est-ce que K3s ?
K3s est une distribution de Kubernetes allégée développée par Rancher Labs (désormais faisant partie de SUSE). Elle est conçue pour être rapide à installer, ne nécessitant qu'un seul binaire de moins de 100 Mo. K3s supprime les pilotes non essentiels et des fonctionnalités facultatives pour simplifier son installation. Une autre solution aurait été d'installer RKE2 qui est une autre distribution de Kubernetes par Rancher et qui est une évolution de K3s conçue pour etre plus stricts dans les environnements de productions et plus complet.

Préparation du serveur Ubuntu
Notre serveur sera une serveur Ubuntu 24.04 LTS.
Ajouter une ip fixe au serveur:
sudo nano /etc/netplan/50-cloud-init.yaml# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
dhcp4: no
addresses: [192.168.245.100/24]
gateway4: "192.168.245.1"
optional: true
nameservers:
addresses: [8.8.8.8,8.8.4.4]
version: 2Appliquer la configuration avec la commande
sudo netplan applyNous devons maintenant créer un fichier de configuration qui sert à modifier les paramètres du noyau linux.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOFnet.bridge.bridge-nf-call-iptables = 1: Active le filtrage des paquets IP à travers les ponts réseau (bridges) pariptables. Cela permet àiptablesde filtrer et de manipuler le trafic des conteneurs gérés par Kubernetes, essentiel pour implémenter des politiques de sécurité au niveau du réseau.net.ipv4.ip_forward = 1: Active le routage IP, permettant au serveur de fonctionner comme un routeur pour transmettre le trafic IP entre les interfaces réseau. C'est crucial pour le fonctionnement des environnements de réseau dans Kubernetes, où différents pods et services peuvent avoir besoin de communiquer à travers diverses interfaces et réseaux.
Appliquer votre fichier
sudo sysctl --systemInstaller les dépendances et packages nécessaires.
sudo apt-get update && sudo apt-get install -y net-tools apt-transport-https ca-certificates curl
sudo apt install nfs-common # Pour les montages NFSInstallation de K3s
Nous allons suivre l'installation de base qui se trouve sur le site de documentation K3s
Serveur unique
Voici la ligne de commande pour lancer l'installation.
curl -sfL https://get.k3s.io | sh -Cela installation le service K3s qui sera lancé automatiquement au boot, ainsi que les utilitaires comme kubectl, crictl, ctr, k3s-killall.sh et k3s-uninstall.sh
Votre kubeconfig se trouvera dans /etc/rancher/k3s/k3s.yaml
Serveur cluster
Pour configurer d'autres serveurs vous devrez utiliser cette commande:
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -Cela définira l'url du cluster ainsi que le token qui sera partager entre tous.
Vous pouvez choisir de ne pas installer le CNI par défaut et d'installer celui de votre choix:
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC='--flannel-backend=none --disable-network-policy' sh -Configuration de base
local-patch directory
Le local-path dans le contexte de Kubernetes, et plus spécifiquement dans des distributions comme K3s, se réfère à un type de provisionneur de stockage persistant. Ce provisionneur permet aux clusters Kubernetes de facilement utiliser le stockage disponible sur les nœuds locaux pour stocker des données de manière persistante, sans nécessiter des solutions de stockage externes ou réseau complexes
Par défaut le répertoire par défaut est /var/lib/rancher/k3s/storage, si comme moi vous voulez le déplacer sur un autre répertoire comme /opt/local-path voici comment faire:
Création du répertoire
sudo mkdir -p /opt/local-path
sudo chown -R root:root /opt/local-path
sudo chmod -R 755 /opt/local-pathModification du ConfigMap
kubectl edit configmap local-path-config -n kube-systemet remplacer
{
"nodePathMap":[
{
"node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths":["/var/lib/rancher/k3s/storage"]
}
]
}
par
{
"nodePathMap":[
{
"node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths":["/opt/local-path"]
}
]
}
Trouver le pod
local-path-provisioner
# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6799fbcd5-nrdl5 1/1 Running 0 52m
helm-install-traefik-crd-4npw2 0/1 Completed 0 52m
helm-install-traefik-wtqx9 0/1 Completed 1 52m
metrics-server-54fd9b65b-gz96d 1/1 Running 0 52m
svclb-traefik-4c86d401-lzvtn 2/2 Running 0 51m
traefik-7d5f6474df-n4nbf 1/1 Running 0 51m
1/1 Running 4 (31m ago) 32mRelancer le pod
kubectl delete pod local-path-provisioner-6c86858495-bkbvv -n kube-systempout tester vous pouvez créer le fichier pvc.yaml et pod.yaml puis les exécuter sur le noeud en question
Vous pouvez utiliser ces commandes pour vérifier:
kubectl get pv
kubectl get pvcMetalLB
Si vous comptez installer MetalLB sur K3s, vous devrez désactiver le service loadbalancer nommé Klipper puis suivre mon installation.
deux méthodes s'offre à vous, soit le désactiver lors de l'installation ou alors modifier le fichier de service k3s.service tous les deux avec la commande --disable=servicelb
Editez le fichier /etc/systemd/system/k3s.service
remplacer
...
ExecStart=/usr/local/bin/k3s \
server \par
...
ExecStart=/usr/local/bin/k3s \
server --disable servicelb \une fois fait relancer le service avec la commande:
sudo systemctl daemon-reload && sudo systemctl restart k3sFin
Je ne vais pas m'étaler sur toutes les configurations mais vous retrouver tout le nécessaire ici
Mis à jour
