Installation de Kubernetes
Préambule : environnement déjà prêt ?
Si vous avez déjà un cluster Kubernetes fonctionnel avec une StorageClass par défaut configurée, vous pouvez passer directement à Installation de Kubevirt. Sinon, suivez les étapes ci-dessous pour installer K3s et configurer le stockage.
Prérequis
Une ou plusieurs machines Linux avec systemd (la plupart des distributions modernes).
Accès sudo ou root sur toutes les machines.
Une connexion internet sur toutes les machines.
Une communication réseau ouverte entre les machines, notamment sur les ports TCP 6443 (pour le serveur) et 10250 (pour les agents).
Installation de K3s
Ce guide vous explique comment installer K3s, une distribution Kubernetes légère, sur une seule machine ou plusieurs machines.
Ce scénario est idéal pour des environnements de développement, de test ou pour des petits déploiements.
Télécharger et Installer K3s :
Ouvrez votre terminal et exécutez la commande suivante :
curl -sfL https://get.k3s.io | sh -
Cette commande télécharge un script et exécute l’installation de K3s en tant que service systemd.
Démarrer et Activer K3s :
Le script d’installation démarre automatiquement le service K3s. Vous pouvez vérifier son état avec :
sudo systemctl status k3s
Pour vous assurer que K3s démarre automatiquement au redémarrage, activez le service :
sudo systemctl enable k3s
Récupérer le Fichier Kubeconfig :
K3s génère un fichier kubeconfig qui vous permet d’interagir avec votre cluster Kubernetes. Il se trouve généralement à l’emplacement suivant :
sudo cat /etc/rancher/k3s/k3s.yaml
Il est recommandé de copier ce fichier vers votre répertoire personnel pour une utilisation plus facile :
mkdir -p ~/.kube sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config
Vérifier l’Installation :
Vous pouvez maintenant utiliser kubectl, l’outil en ligne de commande Kubernetes, pour interagir avec votre cluster :
kubectl get nodes
Vous devriez voir une seule node avec le statut Ready.
Ce scénario est adapté pour des environnements plus robustes et potentiellement plus performants.
Choisir une Machine Serveur : Sélectionnez une des machines pour être le serveur K3s.
Installer le Serveur K3s : Sur la machine serveur, exécutez la commande suivante :
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --tls-san <ADRESSE_IP_OU_HOSTNAME_DU_SERVEUR>" sh -
Remplacez <ADRESSE_IP_OU_HOSTNAME_DU_SERVEUR> par l’adresse IP ou le nom d’hôte que les agents utiliseront pour se connecter au serveur. L’option –tls-san ajoute cette adresse/nom au certificat TLS du serveur.
Récupérer le Token du Serveur :
Après l’installation, le serveur génère un token qui sera utilisé par les agents pour s’y joindre. Vous pouvez récupérer ce token sur la machine serveur :
sudo cat /var/lib/rancher/k3s/server/node-token
Notez ce token, vous en aurez besoin pour configurer les agents.
Démarrer et Activer le Serveur K3s :
sudo systemctl enable k3s-server sudo systemctl start k3s-server sudo systemctl status k3s-server
Récupérer le Fichier Kubeconfig (depuis le serveur) :
Comme pour l’installation sur une seule machine, le fichier kubeconfig se trouve sur le serveur :
sudo cat /etc/rancher/k3s/k3s.yaml
Pour utiliser kubectl depuis une autre machine, vous devrez copier ce fichier et potentiellement ajuster l’adresse du serveur.
Sur chaque machine agent : Exécutez la commande suivante, en remplaçant <ADRESSE_IP_OU_HOSTNAME_DU_SERVEUR> par l’adresse IP ou le nom d’hôte du serveur et <TOKEN_DU_SERVEUR> par le token que vous avez récupéré :
curl -sfL https://get.k3s.io | K3S_URL="https://<ADRESSE_IP_OU_HOSTNAME_DU_SERVEUR>:6443" K3S_TOKEN="<TOKEN_DU_SERVEUR>" sh -
Démarrer et Activer l’Agent K3s :
sudo systemctl enable k3s-agent sudo systemctl start k3s-agent sudo systemctl status k3s-agent
Sur la machine où vous avez configuré kubectl (généralement le serveur ou une machine avec le kubeconfig copié), exécutez :
kubectl get nodes
Vous devriez voir la machine serveur et toutes les machines agents avec le statut Ready.
Configuration du stockage
KubeVirt et CDI ont besoin d’une StorageClass par défaut pour créer des volumes persistants.
Option 1 : Local Path Provisioner (défaut K3s)
Vérification
kubectl get storageclass
Vous devriez voir local-path
comme (default)
.
Définir comme défaut si besoin
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Avantages
Simple à configurer
Idéal pour tests et mono-nœud
Option 2 : OpenEBS Mayastor (stockage répliqué)
Mayastor est le moteur de stockage hautes performances d’OpenEBS, basé sur NVMe et la réplication.
Hint
- Mayastor nécessite
Kubernetes >= 1.24
Des nœuds avec des disques secondaires disponibles (pas le disque root)
L’activation du module
nvme-tcp
si on utilise NVMe over TCP
Ajouter le repo Helm
helm repo add openebs https://openebs.github.io/openebs
helm repo update
Installer Mayastor
kubectl create namespace mayastor
helm install mayastor openebs/mayastor --namespace mayastor
Vérifier les pods
kubectl -n mayastor get pods
Tous les pods doivent être Running
.
Déployer une StorageClass
répliquée (ex: 2 réplicas)
# mayastor-replicated-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: mayastor-replicated
annotations:
storageclass.kubernetes.io/is-default-class: "true" # optionnel
provisioner: io.openebs.csi-mayastor
parameters:
protocol: nvmf
repl: "2" # <--- nombre de réplicas ici
ioTimeout: "60"
reclaimPolicy: Delete
volumeBindingMode: Immediate
Appliquer la StorageClass :
kubectl apply -f mayastor-replicated-sc.yaml
Vérifier
kubectl get storageclass