Installer K3s (Kubernetes léger)
K3s est une distribution Kubernetes allégée (CNCF), idéale sur un VPS Linux HolyCloud avec 2 à 4 Go de RAM. Elle embarque containerd, un ingress Traefik optionnel et un binaire unique, sans la lourdeur d'un cluster « full » kubeadm.
Prérequis
- VPS HolyCloud Ubuntu 22.04/24.04 ou Debian 12, minimum 2 Go RAM (4 Go recommandé en production)
- Accès root ou sudo
- Ports 6443 (API), 10250 (kubelet) et plage 30000-32767 (NodePort) ouverts si vous exposez des services
- Nom d'hôte résolvable (
hostname -fne doit pas renvoyerlocalhostseul)
Conseil : créez un snapshot HolyCloud avant d'installer un orchestrateur. K3s modifie iptables/nftables et installe des services systemd.
Étape 1 : préparation système
Mettez à jour le système et désactivez le swap (requis par Kubernetes) :
sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Vérifiez les modules kernel :
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
Paramètres réseau :
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
Étape 2 : installation K3s (serveur)
Sur le nœud principal de votre VPS HolyCloud :
curl -sfL https://get.k3s.io | sudo sh -s - server \
--write-kubeconfig-mode 644 \
--tls-san $(curl -s ifconfig.me) \
--tls-san $(hostname -f)
Attendez le démarrage :
sudo systemctl status k3s --no-pager
sudo k3s kubectl get nodes
Le fichier kubeconfig pour un utilisateur non root :
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
export KUBECONFIG=~/.kube/config
kubectl get pods -A
Étape 3 : joindre un nœud agent (optionnel)
Sur un second VPS HolyCloud, récupérez le token sur le serveur :
sudo cat /var/lib/rancher/k3s/server/node-token
Sur l'agent (remplacez IP_SERVEUR et TOKEN) :
curl -sfL https://get.k3s.io | sudo K3S_URL=https://IP_SERVEUR:6443 \
K3S_TOKEN=TOKEN sh -s - agent
Vérifiez depuis le serveur :
kubectl get nodes -o wide
Étape 4 : déployer une application test
kubectl create deployment nginx-demo --image=nginx:alpine --replicas=2
kubectl expose deployment nginx-demo --port=80 --type=NodePort
kubectl get svc nginx-demo
Notez le port NodePort (ex. 31234) et testez depuis votre machine :
curl -I http://IP_PUBLIQUE_VPS_HOLYCLOUD:31234
Ouvrez ce port dans UFW et le pare-feu de l'espace client HolyCloud si nécessaire.
Étape 5 : ingress HTTPS (Traefik inclus)
K3s installe Traefik par défaut. Exemple d'Ingress pour un domaine pointant vers le VPS :
cat <<'EOF' | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts: [www.example.com]
secretName: demo-tls
rules:
- host: www.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-demo
port:
number: 80
EOF
Pour la production, installez cert-manager ou terminez TLS devant le cluster avec Nginx sur le même VPS.
Maintenance et désinstallation
Mettre à jour K3s :
curl -sfL https://get.k3s.io | sudo sh -s - server
Désinstaller complètement :
sudo /usr/local/bin/k3s-uninstall.sh
# Sur un agent :
# sudo /usr/local/bin/k3s-agent-uninstall.sh
Vérification
kubectl cluster-info
kubectl get nodes
kubectl get pods -A
sudo journalctl -u k3s -n 50 --no-pager
Besoin d'aide HolyCloud
- Pod en
Pending: RAM insuffisante — augmentez l'offre VPS ou réduisez les replicas - API inaccessible : port 6443,
--tls-sanavec l'IP publique du VPS - Conflit avec Docker : K3s utilise containerd ; évitez deux runtimes sur le même nœud sans configuration avancée
- Support HolyCloud : sortie
kubectl get nodes,free -h,sudo systemctl status k3s