Aide-mémoire CKAD

exemples YAML k8s

Chaque objet est la raison d’être du suivant. Le nom est le YAML.

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.

Le YAML

  1. Container Images FROM, build, tag, push. Puis pointer un Pod sur le tag — jamais :latest à l’examen.
  2. Pod Un conteneur. Créer avec kubectl run, puis éditer.
  3. Deployment Réplicas et rolling update. Le selector doit matcher le template.
  4. DaemonSet Un Pod par nœud matching. Pas de champ replicas.
  5. StatefulSet Les Pods ont un nom stable et leur propre volume. Le Deployment ne fait pas ça.
  6. Job Tourne jusqu’à succès. Les labels vont sur le template du Pod.
  7. Volumes emptyDir meurt avec le Pod. Un PVC lui survit.
  8. Probes startup, puis liveness (redémarre) et readiness (Service).
  9. Service IP stable devant les Pods. Le selector doit matcher les labels des Pods.
  10. ConfigMap Config non secrète. Une clé en env, toutes en envFrom, ou un fichier monté.
  11. Secret Identifiants. stringData dans le YAML. Mêmes motifs d’injection qu’un ConfigMap.
  12. NetworkPolicy Refus par défaut pour les Pods ciblés. Puis ouvrir les chemins utiles.
  13. SecurityContext Retirer les pouvoirs de type root au process. drop ALL, puis add NET_BIND_SERVICE pour binder :80 sans être root.
  14. Helm Chercher le repo, installer repo/chart, --set. Un chemin marche aussi.
  15. Sidecar Init tourne en premier. Un sidecar partage le Pod — souvent via emptyDir.
  16. Ingress HTTP de l’extérieur vers un Service. Host + path + backend. Il faut un contrôleur.
  17. Kustomize Patcher un dossier de YAML sans Helm. kubectl apply -k .
  18. Debug logs → describe → events → exec. --previous après un crash.
  19. ServiceAccount Identité du Pod pour parler à l’API. Poser serviceAccountName.
  20. HPA Scaler un Deployment quand le CPU dépasse un pourcentage de la request.
  21. Requests & Limits requests planifient le Pod. limits le plafonnent. Mémoire dépassée → OOMKilled.
  22. Namespace Un périmètre. Poser le contexte ou passer -n. Les objets cluster l’ignorent.
  23. RBAC Un Role : des verbes sur des resources. Un Binding le pointe sur un ServiceAccount.
  24. Quota Le Quota plafonne le namespace. LimitRange complète les requests manquantes et pose un max.
  25. CRD Ajoute un kind. Le trouver avec api-resources, puis kubectl get ce nom.
  26. Gateway Le successeur d’Ingress. Un Gateway est le listener. Une HTTPRoute est la règle.
  27. Karpenter Des pods Pending obtiennent un nœud. La charge tombe, le nœud part. Pas au CKAD.
  28. Terraform Écrire l’infra voulue dans un fichier .tf, plan montre le diff, apply la rend réelle. Pas au CKAD.

S’entraîner sur un cluster réel →