Accueil

Kubernetes : Installation et déploiement de clusters

Devops
Difficulte: Advanced
2 min de lecture

Guide complet pour installer Kubernetes avec kubeadm, déployer des applications conteneurisées et administrer vos clusters en production.

Retour aux tutoriels

L'essentiel

  • Chaque nœud doit être préparé avant kubeadm : swapoff -a et le swap commenté dans /etc/fstab (le scheduler a besoin de métriques mémoire exactes), modules overlay et br_netfilter, puis net.bridge.bridge-nf-call-iptables=1 et net.ipv4.ip_forward=1. Comptez 2 vCPU et 2 Go de RAM minimum par machine.
  • Piège containerd : après containerd config default, il faut basculer SystemdCgroup = false en true dans /etc/containerd/config.toml pour aligner le runtime sur le driver cgroup systemd attendu par kubelet, puis redémarrer containerd.
  • Après kubeadm init --pod-network-cidr=10.244.0.0/16, les nœuds restent en NotReady tant qu'aucun CNI n'est déployé : Flannel pour aller vite, Calico si vous avez besoin des NetworkPolicies. Notez la commande kubeadm join affichée en fin d'initialisation, elle porte le token des workers.
  • Un Deployment se met à jour sans coupure via strategy.rollingUpdate (maxUnavailable: 1, maxSurge: 1) couplé à une readinessProbe : kubectl set image deployment/webapp webapp=nginx:1.27 déclenche le rollout, kubectl rollout status le suit et kubectl rollout undo revient en arrière.
  • Les Secrets Kubernetes sont encodés en base64, pas chiffrés : activez le chiffrement au repos via EncryptionConfiguration (ou passez par Vault / Sealed Secrets), et complétez avec RBAC, des NetworkPolicies deny-all et le label pod-security.kubernetes.io/enforce: restricted sur les namespaces sensibles.
À propos de Kubernetes
Kubernetes (K8s) est une plateforme open source d'orchestration de conteneurs développée par Google. Elle automatise le déploiement, la mise à l'échelle et la gestion d'applications conteneurisées à travers des clusters de machines. Ce tutoriel vous guide de l'installation à la mise en production.

Prérequis

  • Machines : Minimum 2 serveurs (1 control plane + 1 worker) avec 2 CPU et 2 Go de RAM chacun
  • Système d'exploitation : Ubuntu 22.04 LTS ou Debian 12 (recommandé)
  • Réseau : Connectivité réseau complète entre toutes les machines du cluster
  • Runtime de conteneurs : containerd ou Docker Engine installé sur chaque nœud
  • Privilèges : Accès root ou sudo sur toutes les machines
  • Ports ouverts : 6443 (API), 2379-2380 (etcd), 10250-10252 (kubelet/scheduler/controller)

Architecture Kubernetes

Comprendre l'architecture de Kubernetes est essentiel avant de commencer l'installation. Un cluster K8s se compose de deux types de noeuds.

Control Plane (Nœud maître)

  • kube-apiserver : Point d'entrée de toutes les requêtes REST. C'est le composant central qui expose l'API Kubernetes.
  • etcd : Base de données clé-valeur distribuée qui stocke l'état complet du cluster (configurations, secrets, état des pods).
  • kube-scheduler : Assigne les pods aux nœuds en fonction des ressources disponibles, des contraintes et des affinités.
  • kube-controller-manager : Exécute les boucles de contrôle qui surveillent l'état du cluster et effectuent les corrections nécessaires.

Worker Nodes (Nœuds de travail)

  • kubelet : Agent qui s'exécute sur chaque nœud worker et garantit que les conteneurs définis dans les pods sont en cours d'exécution.
  • kube-proxy : Gère les règles réseau sur chaque nœud pour acheminer le trafic vers les pods corrects.
  • Container Runtime : Moteur d'exécution des conteneurs (containerd, CRI-O).
Bon à savoir
En production, il est recommandé d'avoir au moins 3 nœuds control plane pour la haute disponibilité d'etcd et de l'API server.

Contenu Premium

Ce tutoriel avancé est réservé aux membres premium.

9,90€ / mois
  • Tous les tutoriels avancés
  • Nouveaux contenus chaque semaine
  • Suivi de progression
  • Annulation à tout moment
MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

Quelle est la différence entre Kubernetes et Docker Swarm ?
Kubernetes est un orchestrateur de conteneurs plus complet et complexe que Docker Swarm. K8s offre l'auto-scaling, le rolling update avancé, la gestion fine du réseau avec les Ingress, les RBAC, et un écosystème de plugins très riche. Docker Swarm est plus simple à mettre en place mais moins adapté aux environnements de production à grande échelle.
Combien de nœuds faut-il au minimum pour un cluster Kubernetes ?
Un cluster Kubernetes fonctionnel nécessite au minimum un nœud control plane et un nœud worker. En production, il est recommandé d'avoir 3 nœuds control plane pour la haute disponibilité et au moins 2 nœuds worker pour la redondance des workloads.
Pourquoi faut-il désactiver le swap pour Kubernetes ?
Kubernetes nécessite que le swap soit désactivé car le scheduler doit connaitre avec précision les ressources mémoire disponibles sur chaque noeud. Le swap fausse les métriques et peut provoquer des comportements imprévisibles dans la gestion des limites de ressources des pods. Depuis la version 1.28, un support expérimental du swap existe via le feature gate NodeSwap.
Comment mettre à jour un cluster Kubernetes sans interruption de service ?
Utilisez la stratégie de rolling update en configurant maxUnavailable et maxSurge dans votre Deployment. Kubernetes remplacera progressivement les anciens pods par les nouveaux. Pour les mises à jour du cluster lui-meme, drainez les nœuds un par un avec kubectl drain, mettez à jour kubeadm/kubelet/kubectl, puis ramenez le nœud avec kubectl uncordon.
Quelle est la différence entre un PersistentVolume et un PersistentVolumeClaim ?
Un PersistentVolume (PV) représente une ressource de stockage physique dans le cluster, provisionnée par un administrateur ou dynamiquement via une StorageClass. Un PersistentVolumeClaim (PVC) est une demande de stockage faite par un pod. Le PVC se lie automatiquement à un PV compatible en termes de taille et de mode d'accès.
Comment sécuriser un cluster Kubernetes en production ?
Activez le RBAC pour contrôler les accès, appliquez des NetworkPolicies pour isoler les pods, utilisez des PodSecurityAdmission pour restreindre les privilèges des conteneurs, chiffrez les Secrets au repos avec EncryptionConfiguration, auditez les appels API, et maintenez le cluster à jour avec les derniers patches de sécurité.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.