Aller au contenu principal
Sommaire de la formation

Attacher une VM externe comme node

coolibra13 vues

C’est LA fonctionnalité que ni KinD ni k3d ne proposent : brancher une vraie machine (VM cloud ou autre) comme worker node de votre cluster local, via un VPN Tailscale intégré. Cas d’usage : tester sur une vraie machine, ajouter un node GPU, simuler un cluster hybride.

5.1 Prérequis

  • La vCluster Platform démarrée (chapitre 4) — le VPN fait partie du free tier

  • Une VM Linux (Ubuntu 22.04+ recommandé), n’importe où : cloud (EC2, GCE, Scaleway, OVH…), Proxmox, ou autre machine du réseau

    • accès SSH avec sudo

    • accès Internet sortant (le VPN traverse les NAT : pas besoin d’IP publique entrante ni d’ouvrir des ports)

    • 2 vCPU / 2 Go RAM minimum

5.2 Créer un cluster avec « private nodes » et VPN

Créez vcluster-hybride.yaml :

privateNodes:
  enabled: true
  vpn:
    enabled: true          # VPN node ↔ control plane
    nodeToNode:
      enabled: true        # VPN entre les nodes

Puis :

vcluster create lab-hybride --values vcluster-hybride.yaml

ℹ️ Équivalent en une ligne, sans fichier :

vcluster create lab-hybride \
  --set privateNodes.enabled=true \
  --set privateNodes.vpn.enabled=true \
  --set privateNodes.vpn.nodeToNode.enabled=true

5.3 Générer le token de join

Toujours connecté au cluster lab-hybride (c’est le cas juste après le create) :

vcluster token create

La commande affiche une commande curl complète contenant un token unique, du type :

curl -fsSLk "https://<host-platform>/kubernetes/project/default/virtualcluster/lab-hybride/node/join?token=<token>" | sh -

Copiez-la telle quelle.

5.4 Exécuter le join sur la VM

Connectez-vous à votre VM en SSH, passez root, et collez la commande :

ssh user@ma-vm
sudo su
curl -fsSLk "https://<host-platform>/.../node/join?token=<token>" | sh -

Le script installe automatiquement les binaires Kubernetes (kubelet, containerd), configure le VPN Tailscale et joint le cluster. Comptez 1 à 2 minutes.

💡 Si le pipe direct dans sh échoue (proxy, politique de sécurité), téléchargez d’abord le script puis exécutez-le :

curl -fsSLk "https://.../node/join?token=<token>" -o join.sh
chmod +x join.sh
sudo ./join.sh

5.5 Vérifier

De retour sur votre machine locale :

kubectl get nodes -o wide

La VM apparaît comme node Ready, avec son IP VPN. Vous pouvez maintenant y scheduler des pods comme sur n’importe quel node (nodeSelector, labels, taints — cf. chapitre 3).

5.6 Nettoyage

kubectl drain <nom-du-node-vm> --ignore-daemonsets
kubectl delete node <nom-du-node-vm>
vcluster delete lab-hybride

Et supprimez ou réinitialisez la VM côté provider.

Checkpoint : une VM distante est Ready dans votre cluster local, un pod y a tourné.


Chapitre 6 — Cheatsheet et pièges à éviter

6.1 Commandes essentielles

Action

Commande

Activer vind

vcluster use driver docker

Créer un cluster

vcluster create <nom>

Créer avec config

vcluster create <nom> --values vcluster.yaml

Lister les clusters

vcluster list

Se (re)connecter

vcluster connect <nom>

Mettre en pause

vcluster pause <nom>

Reprendre

vcluster resume <nom>

Supprimer

vcluster delete <nom>

Démarrer l’UI

vcluster platform start --docker

Supprimer l’UI

vcluster platform destroy --docker

Token de join (node externe)

vcluster token create

6.2 ⚠️ Les commandes qui « bloquent » le terminal

Certaines commandes restent au premier plan et donnent l’impression que le terminal est figé. C’est normal — mais mieux vaut le savoir :

Commande

Comportement

Parade

vcluster platform start

Port-forwarding + login interactif au premier plan

--no-port-forwarding --no-login, ou terminal dédié

kubectl port-forward …

Bloque tant que le tunnel est ouvert

Second terminal, ou & en arrière-plan

kubectl get … --watch

Bloque en attente d’événements

Ctrl+C pour sortir

kubectl logs -f …

Suit les logs en continu

Ctrl+C pour sortir

6.3 Bonnes pratiques pour des labs de formation

  • Un cluster par exercice : la création est si rapide qu’il vaut mieux repartir propre (vcluster delete + vcluster create) que déboguer un cluster pollué.

  • vcluster pause entre deux sessions : l’état est conservé, la RAM est libérée.

  • Versionnez vos vcluster.yaml : un fichier par topologie de lab (single-node, multi-node, hybride) dans le repo de la formation.

  • Platform d’abord : si vous voulez l’UI, démarrez la Platform avant de créer les clusters.

  • Nommez explicitement : lab-1, lab-multinode, lab-hybride… vos apprenants s’y retrouveront dans vcluster list.


Conclusion

Avec vind, monter un lab Kubernetes devient trivial : un cluster jetable en 30 secondes, du multi-node sans VM, un LoadBalancer qui marche vraiment, une pause qui libère les ressources, et même de vraies machines attachables au cluster local. Pour de la formation, c’est aujourd’hui l’outil le plus complet de la famille « Kubernetes in Docker ».

Pour aller plus loin

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.