KubeSolo est une distribution Kubernetes single-node ultra-légère développée par Portainer, lancée en 2024. Packagée en un seul binaire statique, elle cible les environnements contraints en ressources : edge computing, IoT, labs et postes de développement. Elle est conçue pour s'intégrer nativement avec Portainer comme interface de gestion.
Idéale pour : développement local minimaliste, edge computing, IoT, démo rapide de workloads Kubernetes sans infrastructure complexe.
Projet jeune : KubeSolo est en développement actif depuis 2024. Certaines fonctionnalités avancées peuvent être manquantes ou en cours d'implémentation. Vérifier le GitHub pour l'état courant.
Informations essentielles
Origine : Portainer.io (Nouvelle-Zélande) · Licence : zlib · Architectures : x86_64, ARM64
Liens : GitHub · Releases · Portainer
Support : Projet communautaire en développement actif - pas de LTS défini. Consulter les releases GitHub pour les versions supportées.
Stack par défaut
| Composant | Valeur |
|---|---|
| Runtime | containerd (inclus) |
| CNI | Flannel |
| Ingress controller | Aucun (à installer séparément) |
| Stockage | Aucun (à installer séparément) |
| DNS | CoreDNS |
| Mode | Single-node uniquement |
Prérequis
- Linux 64-bit (kernel ≥ 4.x) ou ARM64
- 512 MB RAM minimum (1 GB recommandé)
- 2 GB d'espace disque
- Droits root
Installation
# Télécharger le binaire
curl -LO https://github.com/portainer/kubesolo/releases/latest/download/kubesolo-linux-amd64
chmod +x kubesolo-linux-amd64
sudo mv kubesolo-linux-amd64 /usr/local/bin/kubesolo
# Démarrer le cluster
sudo kubesolo server
Démarrer comme service systemd
sudo tee /etc/systemd/system/kubesolo.service <<EOF
[Unit]
Description=KubeSolo Kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kubesolo server
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now kubesolo
Configurer kubectl
mkdir -p ~/.kube
sudo cp /var/lib/kubesolo/kubeconfig ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
kubectl get nodes
Déployer un workload
# nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
nodePort: 30080
kubectl apply -f nginx-deploy.yaml
kubectl get pods
curl http://localhost:30080
Intégration Portainer
KubeSolo est conçu pour être géré via Portainer. Une fois le cluster démarré :
# Déployer Portainer dans KubeSolo
kubectl apply -n portainer -f https://downloads.portainer.io/ee2-19/portainer-k8s-lb.yaml
# Accéder à l'interface
kubectl get svc -n portainer
Mise à jour
# Arrêter le service
sudo systemctl stop kubesolo
# Télécharger le nouveau binaire
curl -LO https://github.com/portainer/kubesolo/releases/latest/download/kubesolo-linux-amd64
chmod +x kubesolo-linux-amd64
sudo mv kubesolo-linux-amd64 /usr/local/bin/kubesolo
# Redémarrer
sudo systemctl start kubesolo
Troubleshooting
Cluster non démarré
sudo systemctl status kubesolo
sudo journalctl -u kubesolo -f
Pod bloqué en Pending
kubectl describe pod <nom>
kubectl get events --sort-by='.lastTimestamp'
# Vérifier les ressources disponibles
kubectl top nodes
Reset complet
sudo systemctl stop kubesolo
sudo rm -rf /var/lib/kubesolo
sudo systemctl start kubesolo
Commandes utiles
# État du cluster
kubectl get nodes
kubectl get pods -A
# Logs du service
sudo journalctl -u kubesolo -f
# Version
kubesolo --version
# Arrêter / démarrer
sudo systemctl stop kubesolo
sudo systemctl start kubesolo
Ressources
- GitHub : https://github.com/portainer/kubesolo
- Releases : https://github.com/portainer/kubesolo/releases
- Portainer : https://www.portainer.io