1. Le control plane #
Le cerveau du cluster.
Les composants #
| Composant | Rôle |
|---|---|
| kube-apiserver | API REST, authentification, autorisation, admission ; seul point d'accès à etcd |
| etcd | Base clé/valeur distribuée contenant tout l'état du cluster (à sauvegarder !) |
| kube-scheduler | Choisit le nœud d'un pod selon ressources, affinités et contraintes |
| kube-controller-manager | Boucles de contrôle : réplicas, nœuds, endpoints, jobs... |
| cloud-controller-manager | Inté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.
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 | tail4. Les objets de base #
Le vocabulaire à connaître.
Panorama #
| Objet | Rôle | Exemple |
|---|---|---|
| Pod | Plus petite unité déployable (1 ou plusieurs conteneurs) | kubectl run |
| ReplicaSet / Deployment | Maintient N pods ; gère les mises à jour | kubectl create deployment |
| Service | Point d'accès stable vers des pods | ClusterIP, NodePort, LoadBalancer |
| Ingress / Gateway | Routage HTTP depuis l'extérieur | nginx, HAProxy, Traefik |
| ConfigMap / Secret | Configuration et données sensibles | variables, fichiers |
| PersistentVolumeClaim | Demande de stockage persistant | StorageClass |
| Namespace | Isolation logique | dev, prod |
| Job / CronJob | Tâches ponctuelles ou planifiées | sauvegardes |
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