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.

  1. 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.

  2. 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
    
  3. 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
    
  4. 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.

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