Compte rendu des tests de cluster Kubernetes léger - K3s sur Ecloud
Ces notes décrivent un retour d’expérience sur le déploiement d’un cluster K3s avec différentes configurations minimales.
K3s – Configuration minimale et observations sur une seule VM.
1- (2 vCPU / 2 Go RAM)
Scénarios testés
-
Déploiement simple (Nginx)
- Un serveur web Nginx déployé via K3s fonctionne correctement.
- Exposition en NodePort : accessible et stable, même lors d’un test en boucle continue sur la page d’index.
-
Connexion à Rancher
- Le cluster K3s a été ajouté à Rancher sans difficulté.
- Supervision et gestion initiales opérationnelles.
Problèmes rencontrés
Lors du déploiement de l’application Boutique (microservices-demo) :
-
Performance dégradée
- Déploiement très lent (≈20 min au lieu de <1 min sur un cluster K3s 3 nœuds).
- Réactivité faible : console
kubectlet interface Rancher répondent lentement.
-
Services instables
- Certains pods restent longtemps en état
NotReady. - Redémarrages automatiques et aléatoires des services (
CrashLoopBackOffobservé).
- Certains pods restent longtemps en état
-
Consommation mémoire critique
free -m total utilisé libre partagé tamp/cache disponible Mem: 1966 1659 85 18 424 307 Swap: 0 0 0
2- VM 3 vCPU / 2.5 Go RAM
Scénarios testés
-
Déploiement d’un serveur Nginx
- 1 pod Nginx déployé via K3s fonctionne correctement.
- Exposition en NodePort → accessible et stable lors de requêtes répétées.
-
Intégration Rancher
- Le cluster a été ajouté à Rancher sans problème.
- Consultation des statistiques possible (un peu de latence, mais fonctionnel).
-
Déploiement de la boutique (microservices-demo)
- L’application démarre et fonctionne.
- Quelques lenteurs constatées, mais globalement utilisable.
- Le LoadBalancer MetalLB a bien fonctionné pour exposer la boutique.
Test de montée en charge (LoadGenerator)
Configuration initiale
kubectl -n default get deploy loadgenerator -o yaml | yq '.spec.template.spec.containers[0].env'
FRONTEND_ADDR: frontend:80
USERS: "10"
RATE: "1"
Je monte en charge
# 1 : 50 utilisateurs, 5/s --> C'est OK
kubectl set env deploy/loadgenerator USERS=50 RATE=5
# 2 : 200 utilisateurs, 20/s --> C'est plus lent et moins reactif
kubectl set env deploy/loadgenerator USERS=200 RATE=20
# 3 : 500 utilisateurs, 50/s --> C'est plus lent et moins reactif. Les services ne repondent pas + console lente.
kubectl set env deploy/loadgenerator USERS=500 RATE=50
3- VM 3 vCPU / 3 Go RAM
- Déploiement de la boutique (microservices-demo)
- L’application démarre et fonctionne.
- Quelques lenteurs constatées, mais globalement utilisable.
K3s – Configuration minimale et observations sur 3 VMs.
1- 3VMs avec 2+0.5x2 = 3 vCPU / 2 + 2*512= 3 Go RAM
Scénarios testés
-
Déploiement de la boutique (microservices-demo)
- L’application démarre et fonctionne.
- Quelques lenteurs constatées, mais globalement utilisable.
- Le LoadBalancer MetalLB a bien fonctionné pour exposer la boutique.
-
Rancher
- Le cluster a été ajouté à Rancher et la lenteur augmente.
- Je monte en charge
# 1 : 50 utilisateurs, 5/s kubectl set env deploy/loadgenerator USERS=50 RATE=5 - Rancher voit les nodes cassés des fois!
2- 3VMs avec 2+1x2 = 4 vCPU / 2 + 2x1 = 4Go RAM
Scénarios testés
-
Déploiement de la boutique (microservices-demo)
- L’application démarre et fonctionne.
- Le LoadBalancer MetalLB a bien fonctionné pour exposer la boutique.
-
Rancher
- Le cluster a été ajouté à Rancher
- Je monte en charge
# 1 : 50 utilisateurs, 5/s --> C'est OK kubectl set env deploy/loadgenerator USERS=50 RATE=5 # 2 : 200 utilisateurs, 20/s --> C'est OK avec un peu de lenteur kubectl set env deploy/loadgenerator USERS=200 RATE=20 # 3 : 500 utilisateurs, 50/s --> C'est OK mais plus de lenteur kubectl set env deploy/loadgenerator USERS=500 RATE=50