Le provisionnement est découpé en modules pour qu'une VM n'installe que ce dont
le TP a besoin. Le point d'entrée est ../bootstrap.sh, qui exécute toujours
base.sh puis le module correspondant au profil demandé.
| Profil | Modules exécutés | Contenu | Pour quels TPs |
|---|---|---|---|
base (défaut) |
base.sh |
DNS, outils, /etc/hosts, swap off, clients iSCSI / NFS / GlusterFS |
Linux, Ansible, serveur NFS |
docker |
base.sh + docker.sh |
Docker CE, Buildx, Compose v2 | Docker, Docker Swarm |
kubeadm |
base.sh + kubeadm.sh |
containerd, crictl, kubelet / kubeadm / kubectl |
Kubernetes niveau 2 |
⚠️ dockeretkubeadms'excluent. Les deux profils configurent containerd, mais pas de la même façon : Docker impose sa propre configuration/etc/containerd/config.toml, incompatible avec leSystemdCgroupattendu par kubelet.
ℹ️ Le profil
kubeadmne lance nikubeadm initnikubeadm join. Le bootstrap du plan de contrôle et l'ajout des nœuds restent des étapes pédagogiques manuelles, décrites dansk8s/niveau2/01-Installation-Kubeadm.md.
# Toutes les VMs avec le même profil
LAB_PROFILE=kubeadm vagrant up
# Reprovisionner sans recréer les VMs
LAB_PROFILE=docker vagrant provision
# Une seule VM
LAB_PROFILE=kubeadm vagrant up box01Pour un profil différent par machine, ajoutez la clé :profile dans le tableau
servers du Vagrantfile :
{ :hostname => "nfs-server", :ip => "192.168.56.50", :profile => "base", ... }Les scripts sont également exécutables à la main dans une VM déjà démarrée :
vagrant ssh box01
sudo bash /vagrant/bootstrap.sh kubeadm| Variable | Défaut | Effet |
|---|---|---|
LAB_PROFILE |
base |
Profil de provisionnement |
LAB_REGISTRY_MIRROR |
https://reg.ntl.nc/v2/proxy |
Cache de registry (Harbor). Mettre à "" pour tirer directement depuis Docker Hub |
LAB_K8S_MINOR |
v1.34 |
Version mineure des paquets Kubernetes |
LAB_CRICTL_VERSION |
v1.36.0 |
Version de crictl |
LAB_PAUSE_IMAGE |
registry.k8s.io/pause:3.10.2 |
Image sandbox de containerd (doit correspondre à celle attendue par kubeadm) |
Exemple hors réseau interne, sans cache Harbor :
LAB_REGISTRY_MIRROR="" LAB_PROFILE=kubeadm vagrant upRésolveurs DNS publics, paquets de base (curl, git, vim, jq, htop,
tree, conntrack), clients de stockage (open-iscsi, nfs-common,
glusterfs-server), entrées /etc/hosts pour box01→box04 et nfs-server,
désactivation du swap, et miroir de registry k3s dans
/etc/rancher/k3s/registries.yaml.
Les entrées /etc/hosts sont encadrées par des marqueurs, le script est donc
idempotent.
Dépôt Docker officiel, installation de docker-ce, docker-ce-cli,
containerd.io, docker-buildx-plugin et docker-compose-plugin, rotation des
logs conteneurs, ajout de l'utilisateur vagrant au groupe docker.
Le cache Harbor du lab est un proxy project : il s'utilise en préfixant l'image (
reg.ntl.nc/proxy/nginx:latest) et non viaregistry-mirrors, qui n'accepte pas de préfixe de chemin.
Modules noyau overlay / br_netfilter, sysctl CRI, containerd en
SystemdCgroup avec miroir docker.io, crictl, puis kubelet / kubeadm /
kubectl épinglés via apt-mark hold. Installe aussi l'alias k=kubectl et la
complétion Bash.