RousselTMLEARNING

Conteneurisation

Kubernetes : architecture et composants (control plane, nœuds, objets)

Comprendre l'architecture de Kubernetes : API server, etcd, scheduler, controller manager, kubelet, kube-proxy, runtime de conteneurs, objets de base et boucle de réconciliation.

1. Le control plane #

Le cerveau du cluster.

Les composants #

Architecture d'un cluster Kubernetes
Tous les composants parlent à l'API server ; seul lui écrit dans etcd.
ComposantRôle
kube-apiserverAPI REST, authentification, autorisation, admission ; seul point d'accès à etcd
etcdBase clé/valeur distribuée contenant tout l'état du cluster (à sauvegarder !)
kube-schedulerChoisit le nœud d'un pod selon ressources, affinités et contraintes
kube-controller-managerBoucles de contrôle : réplicas, nœuds, endpoints, jobs...
cloud-controller-managerIntégration avec le fournisseur cloud (load balancers, volumes)

2. Les nœuds de travail #

Là où tournent les pods.

kubelet, runtime et kube-proxy #

  • kubelet : agent du nœud, démarre les conteneurs décrits par les pods et rapporte leur état.
  • Container runtime (containerd, CRI-O) : exécute réellement les conteneurs via l'interface CRI.
  • kube-proxy : programme les règles réseau (iptables/IPVS) pour les Services.
kubectl get nodes -o wide
kubectl describe node <noeud> | sed -n '/Capacity/,/Allocated resources/p'
kubectl get --raw='/readyz?verbose' | head -20            # santé de l'API server
kubectl -n kube-system get pods -o wide                   # composants système
kubectl cluster-info
crictl ps                                                 # sur un nœud : conteneurs (runtime CRI)

3. La boucle de réconciliation #

Le principe déclaratif.

État désiré vs état observé #

Kubernetes est déclaratif : vous décrivez l'état voulu (« 3 réplicas de cette application ») et les contrôleurs agissent en continu pour que l'état réel converge vers l'état désiré. Si un pod disparaît, un autre est recréé sans intervention.

Boucle de réconciliation de Kubernetes
Chaque contrôleur exécute cette boucle pour son type d'objet.
kubectl create deployment web --image=nginx --replicas=3
kubectl delete pod -l app=web --wait=false        # supprimer les pods
kubectl get pods -l app=web -w                    # de nouveaux pods apparaissent aussitôt
kubectl get events --sort-by=.lastTimestamp | tail

4. Les objets de base #

Le vocabulaire à connaître.

Panorama #

ObjetRôleExemple
PodPlus petite unité déployable (1 ou plusieurs conteneurs)kubectl run
ReplicaSet / DeploymentMaintient N pods ; gère les mises à jourkubectl create deployment
ServicePoint d'accès stable vers des podsClusterIP, NodePort, LoadBalancer
Ingress / GatewayRoutage HTTP depuis l'extérieurnginx, HAProxy, Traefik
ConfigMap / SecretConfiguration et données sensiblesvariables, fichiers
PersistentVolumeClaimDemande de stockage persistantStorageClass
NamespaceIsolation logiquedev, prod
Job / CronJobTâches ponctuelles ou planifiéessauvegardes
kubectl api-resources | head -30            # toutes les ressources disponibles
kubectl explain deployment.spec.strategy       # documentation intégrée d'un champ
kubectl explain pod.spec.containers --recursive | head -40

Pour aller plus loin