L’appli tourne dans un Pod. Un ou plusieurs conteneurs, un nœud. S’il meurt, il reste mort.
Deployment — Un Pod mort est remplacé. On en veut 3, il en garde 3.
Chaque nouveau Pod reçoit une nouvelle IP. Rien ne peut appeler l’appli par adresse.
Service — Une adresse qui ne change pas. Il trouve les Pods par label, pas par IP.
Un Service public, c’est un load balancer. Dix Services publics, dix load balancers.
Ingress — Un load balancer. Le host et le path choisissent le Service.
Ingress n’est que des règles. Rien dans le cluster ne les exécute.
Ingress Controller — nginx, Traefik, ou celui du cloud. Il lit les règles et route.
L’hôte de la base est encore dans l’image. Le changer, c’est reconstruire l’image.
ConfigMap — La config vit hors de l’image et s’injecte au démarrage du Pod. La même image, chaque environnement.
Un mot de passe dans un ConfigMap n’est qu’une clé de plus. Quiconque peut lire l’objet peut le lire.
Secret — Les identifiants dans leur propre objet, avec leurs propres accès. L’image ne les contient jamais.
Certaines heures veulent 2 Pods, d’autres 20. Un nombre fixe de réplicas est faux dans les deux cas.
HPA — Le CPU dépasse un pourcentage de la request, des Pods s’ajoutent. La charge retombe, ils partent.
Le HPA a ajouté des Pods. Les nœuds sont pleins. Les nouveaux Pods restent Pending.
Karpenter — Un Pod Pending obtient un nœud. La charge est partie, le nœud est parti.
Un Pod peut prendre tout le nœud si personne n’a dit à Kubernetes combien il lui faut, ni combien il a le droit d’utiliser.
Requests et Limits — requests, c’est ce que le scheduler réserve. limits, c’est le plafond au runtime.