Retourner sur le site

Installer K3s (Kubernetes léger)

Déployez un cluster Kubernetes léger K3s sur votre VPS HolyCloud pour orchestrer des conteneurs avec peu de ressources.

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 -f ne doit pas renvoyer localhost seul)

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-san avec 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