Installation d'un cluster
Trois approches couvrent l'essentiel des besoins : kubeadm pour les clusters bare-metal ou VM production, k3s pour les environnements contraints (edge, homelab, CI), kind pour le développement local. Les clusters managés (EKS, GKE, AKS) suivent des procédures spécifiques aux providers.
kubeadm — cluster production
kubeadm est l'outil officiel pour bootstrapper des clusters conformes aux meilleures pratiques. Il gère la génération des certificats, la configuration d'etcd, le démarrage du control plane et l'ajout des noeuds worker.
Prérequis (chaque noeud)
# Désactiver le swap (requis par kubelet)
swapoff -a
sed -i '/swap/d' /etc/fstab
# Charger les modules noyau
cat <# Dépôt Kubernetes (v1.35)
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
apt-get update && apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectlInitialisation du control plane
# Sur le premier noeud control plane
kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint="k8s-api.example.com:6443" --upload-certs
# Configurer kubectl
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
# Installer un CNI (exemple : Calico)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlk3s — cluster léger
k3s est une distribution Kubernetes certifiée CNCF, condensée en un binaire unique. Il embarque containerd, flannel, CoreDNS, Traefik et un SQLite/etcd embarqué. Idéal pour edge, IoT, homelab, et CI pipelines.
# Installation serveur (control plane)
curl -sfL https://get.k3s.io | sh -
# Token pour joindre les agents
cat /var/lib/rancher/k3s/server/node-token
# Installation agent (worker)
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
# Accès kubectl
export KUBECONFIG=/etc/rancher/k3s/k3s.yamlkind — développement local
kind (Kubernetes IN Docker) lance des noeuds Kubernetes comme conteneurs Docker. Parfait pour tester des manifests, des Helm charts, des opérateurs, sans avoir besoin d'une VM.
# Installation
go install sigs.k8s.io/kind@v0.24.0
# ou via binaire : https://kind.sigs.k8s.io/docs/user/quick-start/
# Cluster mono-noeud
kind create cluster --name dev
# Cluster multi-noeuds (fichier de config)
cat <kubectl — bases
# Statut du cluster
kubectl cluster-info
kubectl get nodes -o wide
# Changer de contexte (multi-cluster)
kubectl config get-contexts
kubectl config use-context my-cluster
# Alias indispensable
alias k=kubectl
# Autocomplétion
source <(kubectl completion bash)
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc