Aller au contenu

Bank 5 – Réponses courtes (Partie 1 : Fondations)

Instructions

Répondez de façon concise et précise.
Cliquez sur « Correction » pour comparer votre réponse et consulter le barème.

Total : 20 questions (5 faciles · 10 moyennes · 5 difficiles)


Niveau Facile

Question 1

Question : Que signifie l'acronyme CNCF, l'organisme qui certifie des distributions Kubernetes telles que k3s ?

Correction (1 pt)

Cloud Native Computing Foundation.
La CNCF est la fondation qui héberge le projet Kubernetes et assure la certification des distributions conformes.


Question 2

Question : Quelle est la commande kubectl exacte permettant de créer une ressource à partir d'un fichier manifeste YAML nommé deployment.yaml ?

Correction (1 pt)

kubectl apply -f deployment.yaml (ou kubectl create -f deployment.yaml).
L'option -f spécifie le fichier manifeste à appliquer sur le cluster.


Question 3

Question : Quel composant de Kubernetes s'exécute sur chaque nœud worker pour communiquer avec l'API Server et piloter l'exécution des conteneurs ?

Correction (1 pt)

Le kubelet.
Le kubelet est l'agent de nœud principal responsable du maintien des conteneurs en état de marche.


Question 4

Question : Citez l'objet Kubernetes de niveau réseau qui permet d'exposer un ensemble de Pods sous un nom DNS interne et une adresse IP stable.

Correction (1 pt)

Le Service (ou Service Kubernetes).
Le Service fournit l'abstraction d'accès réseau et l'équilibrage de charge vers les Pods ciblés.


Question 5

Question : Quel objet Kubernetes permet de planifier l'exécution d'un Pod unique sur chaque nœud du cluster ?

Correction (1 pt)

Le DaemonSet.
Le DaemonSet garantit qu'une copie du Pod tourne sur l'ensemble (ou une sélection) des nœuds du cluster.


Niveau Moyen

Question 6

Question : Quel est le moteur de stockage de données par défaut utilisé par k3s en mode mono-nœud pour remplacer etcd ?

Correction (2 pts)

SQLite (via kine).
k3s remplace etcd par SQLite par défaut pour réduire l'empreinte mémoire et la complexité d'installation.


Question 7

Question : Quelle commande kubectl permet d'afficher les détails événementiels et l'état complet d'un pod nommé web-pod (notamment utile pour diagnostiquer un échec d'instanciation) ?

Correction (2 pts)

kubectl describe pod web-pod.
kubectl describe fournit un résumé détaillé de la ressource ainsi que les événements récents (Events) associés.


Question 8

Question : Quelle est la différence majeure entre un Service de type ClusterIP et un Service de type NodePort ?

Correction (2 pts)

ClusterIP n'est accessible qu'à l'intérieur du cluster via une IP interne, alors que NodePort ouvre un port statique sur chaque nœud du cluster pour rendre le service accessible de l'extérieur.
NodePort est une extension de ClusterIP permettant l'exposition externe directe sur les IP physiques des nœuds.


Question 9

Question : Dans la spécification d'un Deployment, à quoi sert le champ spec.strategy.type: RollingUpdate ?

Correction (2 pts)

Il permet d'effectuer la mise à jour des Pods de manière progressive et sans interruption de service (zéro downtime), en remplaçant au fur et à mesure les anciens pods par des nouveaux.
La stratégie RollingUpdate évite l'arrêt complet de l'application pendant le déploiement d'une nouvelle version.


Question 10

Question : Quel est le rôle d'un Ingress Controller comme Traefik dans k3s ?

Correction (2 pts)

Il agit comme un proxy/reverse-proxy de couche 7 (HTTP/HTTPS) qui intercepte le trafic entrant dans le cluster et le route vers les Services internes selon des règles définies (hôtes, chemins).
L'Ingress Controller concrétise et exécute les règles déclarées dans les objets Ingress.


Question 11

Question : Quelle est la commande kubectl pour augmenter dynamiquement le nombre de réplicas d'un Deployment nommé api-server à 5 ?

Correction (2 pts)

kubectl scale deployment api-server --replicas=5.
La sous-commande scale modifie la cible de réplicas du Deployment en temps réel.


Question 12

Question : Différenciez brièvement l'action d'une livenessProbe et d'une readinessProbe.

Correction (2 pts)
  • livenessProbe : détermine si le conteneur doit être redémarré en cas de défaillance.
  • readinessProbe : détermine si le conteneur est prêt à recevoir du trafic (si la sonde échoue, le Pod est retiré des endpoints du Service sans redémarrage).
    L'une gère le cycle de vie/santé de l'application, l'autre la disponibilité réseau.

Question 13

Question : Comment appelle-t-on le composant interne à Kubernetes chargé de la résolution des noms de domaine DNS internes au cluster ?

Correction (2 pts)

CoreDNS.
CoreDNS résout les noms de domaine des Services et Pods pour la découverte de services.


Question 14

Question : Quel est le rôle de la ressource ReplicaSet par rapport à un Deployment ?

Correction (2 pts)

Le ReplicaSet garantit qu'un nombre précis de Pods identiques soit toujours en cours d'exécution. Le Deployment est un objet de plus haut niveau qui gère et pilote les ReplicaSets lors des mises à jour.
Un Deployment crée et met à jour automatiquement des ReplicaSets sous-jacents.


Question 15

Question : Dans k3s, quel est l'avantage d'empaqueter les composants du Control Plane et des Workers dans un binaire unique ?

Correction (2 pts)

Réduire drastiquement l'empreinte mémoire/CPU, simplifier la maintenance et rendre l'installation quasi-instantanée sur des environnements contraints.
Cette architecture monobloc légère est le point fort de k3s.


Niveau Difficile

Question 16

Question : Expliquez la fonction des champs maxSurge et maxUnavailable lors de la mise à jour d'un Deployment.

Correction (3 pts)
  • maxSurge : le nombre (ou %) maximal de Pods autorisés au-dessus du nombre de réplicas désiré pendant la mise à jour.
  • maxUnavailable : le nombre (ou %) maximal de Pods qui peuvent être indisponibles simultanément durant le déploiement.
    Ces deux paramètres permettent de régler la vitesse et la tolérance aux pannes pendant les mises à jour applicatives.

Question 17

Question : Dans un Pod contenant deux conteneurs distincts, comment ces deux conteneurs communiquent-ils entre eux sur le réseau ?

Correction (3 pts)

Via l'interface de boucle locale localhost (en utilisant des ports différents), car ils partagent le même espace de noms réseau (network namespace).
L'isolation réseau est faite au niveau du Pod, pas du conteneur individuel.


Question 18

Question : Quelle est la particularité d'un Service Kubernetes de type Headless (clusterIP: None) et dans quel cas d'usage principal l'utilise-t-on ?

Correction (3 pts)

Il n'attribue pas d'IP virtuelle globale (ClusterIP) ; la requête DNS renvoie directement la liste des adresses IP individuelles des Pods ciblés. On l'utilise principalement avec des applications à état (StatefulSets) ou des bases de données nécessitant une communication de pair à pair.
Cela permet aux clients de s'adresser directement à des instances spécifiques sans passer par un proxy intermédiaire.


Question 19

Question : Décrivez le rôle du composant kube-proxy au sein d'un nœud Kubernetes.

Correction (3 pts)

kube-proxy maintient les règles réseau sur les nœuds (via iptables ou IPVS). Il intercepte le trafic destiné aux adresses ClusterIP ou NodePort des Services et le réachemine vers les pods cibles appropriés.
C'est le composant responsable du routage réseau de couche 3/4 vers les Pods.


Question 20

Question : Quel mécanisme Kubernetes permet d'annuler une mise à jour de Deployment défectueuse et d'effectuer un retour à la version précédente via la ligne de commande ?

Correction (3 pts)

La commande kubectl rollout undo deployment <nom_deployment>.
Kubernetes conserve l'historique des révisions (ReplicaSets précédents) pour permettre un rollback rapide.