kube-quest
QCM Kubernetes 50 questions
Niveau : fondamentaux et administration courante Durée conseillée : 60 minutes Barème : 1 point par question. Les questions marquées (plusieurs réponses) ne sont comptées justes que si toutes les bonnes réponses sont cochées et aucune mauvaise. Documents autorisés : aucun (variante possible : documentation kubernetes.io autorisée, durée ramenée à 45 minutes)
Le corrigé complet, avec justification de chaque réponse, se trouve en fin de document.
1. Architecture et plan de contrôle
Q1. Quel composant du plan de contrôle décide sur quel nœud un nouveau Pod sera exécuté ?
- a)
kubelet - b)
kube-scheduler - c)
kube-controller-manager - d)
kube-proxy
Q2. Quel est le seul composant qui lit et écrit directement dans etcd ?
- a)
kubelet - b)
kube-scheduler - c)
kube-apiserver - d)
kube-controller-manager
Q3. (plusieurs réponses) Quelles affirmations décrivent correctement kubelet ?
- a) Il s'exécute sur chaque nœud du cluster
- b) Il crée et supervise les conteneurs en passant par un runtime via l'interface CRI
- c) Il choisit le nœud sur lequel placer un Pod
- d) Il remonte à l'API server l'état des Pods et du nœud
Q4. Quel est le rôle de kube-proxy ?
- a) Il route le trafic HTTP entrant selon les règles Ingress
- b) Il programme les règles réseau du nœud (iptables ou IPVS) qui redirigent le trafic destiné aux Services vers les Pods
- c) Il attribue les adresses IP aux Pods
- d) Il chiffre les communications entre les nœuds
Q5. (plusieurs réponses) Le plan de contrôle est totalement indisponible pendant 30 minutes. Que se passe-t-il ?
- a) Les Pods déjà démarrés continuent de servir le trafic
- b) Tous les Pods sont arrêtés immédiatement sur tous les nœuds
- c) Un Pod qui plante n'est pas replanifié ailleurs
- d)
kubectlne répond plus
2. Pods et cycle de vie
Q6. Quelle est la plus petite unité déployable et ordonnançable dans Kubernetes ?
- a) Le conteneur
- b) Le Pod
- c) Le ReplicaSet
- d) Le Deployment
Q7. (plusieurs réponses) Que partagent les conteneurs d'un même Pod ?
- a) L'espace de noms réseau, donc la même adresse IP et les mêmes ports
- b) Le système de fichiers racine
- c) Les volumes déclarés au niveau du Pod, s'ils y sont montés
- d) L'espace de noms PID, par défaut
Q8. Comment se comportent les initContainers ?
- a) Ils tournent en parallèle des conteneurs applicatifs pendant toute la vie du Pod
- b) Ils s'exécutent l'un après l'autre avant le démarrage des conteneurs applicatifs et doivent se terminer avec succès
- c) Ils redémarrent en boucle tant que le Pod est actif
- d) Ils ne peuvent ni monter de volume ni lire de ConfigMap
Q9. Un Pod reste en état Pending depuis plusieurs minutes. Quelle est la cause la plus probable ?
- a) Le processus principal du conteneur plante au démarrage
- b) Aucun nœud ne satisfait les demandes de ressources ou les contraintes de placement
- c) La
readinessProbeéchoue - d) Le conteneur a dépassé sa limite mémoire
Q10. Que signifie l'état CrashLoopBackOff ?
- a) Le nœud hébergeant le Pod est injoignable
- b) Le conteneur démarre puis se termine de façon répétée, et le kubelet espace progressivement les redémarrages
- c) L'image ne peut pas être téléchargée depuis le registre
- d) Le Pod attend qu'un volume soit attaché
3. Contrôleurs et workloads
Q11. Quel objet crée et gère un ReplicaSet, et pilote les mises à jour progressives ?
- a) Le StatefulSet
- b) Le DaemonSet
- c) Le Deployment
- d) Le Job
Q12. Vous devez déployer un agent de collecte de logs, à raison d'une instance sur chaque nœud, y compris sur les nœuds ajoutés plus tard. Quel objet utilisez-vous ?
- a) Un Deployment avec
replicaségal au nombre de nœuds - b) Un DaemonSet
- c) Un StatefulSet
- d) Un CronJob
Q13. (plusieurs réponses) Quelles propriétés sont spécifiques au StatefulSet ?
- a) Les Pods portent un nom stable et indexé (
db-0,db-1,db-2) - b) Les Pods sont créés et supprimés dans un ordre déterminé
- c) Chaque réplique obtient son propre PVC grâce à
volumeClaimTemplates - d) La suppression du StatefulSet supprime automatiquement les PVC associés
Q14. Quelles valeurs de restartPolicy sont acceptées pour les Pods d'un Job ?
- a)
AlwaysetOnFailure - b)
OnFailureetNever - c)
Alwaysuniquement - d) Les trois valeurs sont acceptées
Q15. Un Pod créé directement en YAML, sans contrôleur, se trouve sur un nœud qui tombe définitivement en panne. Que se passe-t-il ?
- a) Le scheduler le replanifie sur un autre nœud
- b) Le kubelet d'un autre nœud le reprend
- c) Il n'est pas recréé
- d) Il est recréé après expiration du
terminationGracePeriodSeconds
4. Mises à jour et déploiements
Q16. Quelle est la stratégie de mise à jour par défaut d'un Deployment, et quelles sont les valeurs par défaut associées ?
- a)
Recreate, sans paramètre - b)
RollingUpdate, avecmaxSurgeà 25 % etmaxUnavailableà 25 % - c)
RollingUpdate, avecmaxSurgeà 1 etmaxUnavailableà 1 - d)
OnDelete, avecmaxSurgeà 25 %
Q17. Quelle commande permet de revenir à la révision précédente d'un Deployment nommé api ?
- a)
kubectl rollout undo deployment/api - b)
kubectl rollback deployment/api - c)
kubectl apply --previous -f deployment.yaml - d)
kubectl replace --revision=-1 deployment/api
Q18. Que garantit la configuration maxUnavailable: 0 associée à maxSurge: 1 ?
- a) La mise à jour est instantanée
- b) Le nombre de Pods disponibles ne descend jamais sous le nombre de réplicas souhaité, un Pod supplémentaire étant créé avant chaque suppression
- c) Un seul Pod tourne pendant toute la mise à jour
- d) Les anciens Pods sont tous supprimés avant la création des nouveaux
Q19. Quel est l'effet de la stratégie Recreate sur un Deployment ?
- a) Elle recrée les Pods un par un
- b) Elle supprime tous les anciens Pods avant de créer les nouveaux, ce qui provoque une interruption de service
- c) Elle ne recrée les Pods qu'au redémarrage du nœud
- d) Elle duplique le nombre de réplicas pendant la mise à jour
Q20. Comment un Deployment conserve-t-il l'historique de ses révisions ?
- a) Dans un objet
DeploymentHistorydédié - b) En conservant les anciens ReplicaSets, dans la limite fixée par
revisionHistoryLimit - c) Dans les annotations du Pod le plus ancien
- d) Dans
etcd, sous forme de sauvegardes horodatées
5. Services et DNS
Q21. Quel est le type de Service utilisé par défaut si le champ type n'est pas renseigné ?
- a)
NodePort - b)
LoadBalancer - c)
ClusterIP - d)
ExternalName
Q22. Quelle est la plage de ports par défaut allouée aux Services de type NodePort ?
- a) 1024 à 9999
- b) 8000 à 8999
- c) 30000 à 32767
- d) 40000 à 49151
Q23. Quel est le nom DNS complet du Service api déployé dans le namespace prod ?
- a)
api.cluster.local - b)
prod.api.svc.cluster.local - c)
api.prod.svc.cluster.local - d)
api.svc.prod.cluster.local
Q24. Que produit un Service déclaré avec clusterIP: None ?
- a) Le Service est désactivé
- b) La résolution DNS du Service renvoie directement les adresses IP des Pods correspondants
- c) Le Service n'est accessible que depuis le nœud local
- d) Le trafic est réparti aléatoirement sur tous les nœuds
Q25. (plusieurs réponses) Un Service ne redirige aucun trafic vers les Pods attendus. Quelles causes sont plausibles ?
- a) Le
selectordu Service ne correspond à aucun label de Pod - b) Les Pods ciblés ne sont pas à l'état
Ready - c) Le
targetPortne correspond pas au port réellement exposé par le conteneur - d) Le Service est de type
ClusterIP
6. Ingress et politiques réseau
Q26. Vous créez un objet Ingress mais aucune requête n'aboutit et aucune adresse n'apparaît dans kubectl get ingress. Quelle est la cause la plus probable ?
- a) L'Ingress doit être créé dans le namespace
kube-system - b) Aucun contrôleur Ingress n'est déployé dans le cluster
- B) Le Service cible doit être de type
LoadBalancer - c) Le Service cible doit obligatoirement être de type
NodePort - d) Un objet Ingress ne fonctionne qu'avec TLS activé
Q27. Sur quels critères un objet Ingress standard sait-il router une requête ?
- a) L'adresse IP source et le port TCP
- b) Le nom d'hôte et le chemin de l'URL
- c) Le label du Pod de destination
- d) Le protocole de transport uniquement
Q28. (plusieurs réponses) Quelles affirmations sont exactes à propos des NetworkPolicy ?
- a) En l'absence de toute NetworkPolicy, l'ensemble du trafic entre Pods est autorisé
- b) Dès qu'une policy sélectionne un Pod en entrée, tout trafic entrant non explicitement autorisé est bloqué
- c) Elles sont appliquées par l'API server
- d) Le plugin CNI installé doit prendre en charge les NetworkPolicy pour qu'elles produisent un effet
Q29. Quelle définition met en place un refus par défaut de tout le trafic entrant dans un namespace ?
- a) Un
podSelectorvide,policyTypes: [Ingress], et aucune règleingress - b) Un
podSelectorvide avec une règleingressautorisant0.0.0.0/0 - c) La suppression de toutes les NetworkPolicy du namespace
- d) L'annotation
network.kubernetes.io/deny-allsur le namespace
Q30. De quoi dépend l'attribution effective d'une adresse externe à un Service de type LoadBalancer ?
- a) De la configuration de CoreDNS
- b) D'un contrôleur fourni par le cloud provider ou d'une solution équivalente en interne, comme MetalLB
- c) De la présence d'un Ingress dans le même namespace
- d) De l'activation d'IPVS sur les nœuds
7. Configuration et secrets
Q31. (plusieurs réponses) Comment le contenu d'un ConfigMap peut-il être exposé à un conteneur ?
- a) Comme variable d'environnement unitaire, via
valueFrom.configMapKeyRef - b) Comme jeu complet de variables d'environnement, via
envFrom - c) Comme fichiers, en montant le ConfigMap dans un volume
- d) Comme argument implicite ajouté automatiquement à la commande du conteneur
Q32. Quelle affirmation décrit correctement un Secret Kubernetes standard ?
- a) Son contenu est chiffré par défaut dans
etcd - b) Son contenu est encodé en base64 et n'est pas chiffré tant que le chiffrement au repos n'a pas été activé sur le cluster
- c) Il n'est lisible que par le kubelet du nœud
- d) Il est automatiquement répliqué dans tous les namespaces
Q33. Une clé d'un ConfigMap monté sous forme de volume est modifiée. Que se passe-t-il côté conteneur ?
- a) Le fichier monté est mis à jour après un court délai de synchronisation, sans redémarrage du Pod
- b) Le Pod redémarre automatiquement pour recharger la valeur
- c) Le montage devient invalide jusqu'à recréation du Pod
- d) Le changement est rejeté par l'API server
Q34. Comment autoriser un Pod à tirer une image depuis un registre privé ?
- a) En renseignant le mot de passe en clair dans le champ
image - b) En créant un Secret de type
kubernetes.io/dockerconfigjsonet en le référençant viaimagePullSecrets - c) En ajoutant les identifiants dans un ConfigMap monté sur
/root/.docker - d) En désactivant la vérification TLS sur le kubelet
Q35. Quel est l'intérêt principal du champ immutable: true sur un ConfigMap ou un Secret ?
- a) Il chiffre le contenu de l'objet
- b) Il interdit toute modification ultérieure et réduit la charge de surveillance sur l'API server
- c) Il rend l'objet visible depuis tous les namespaces
- d) Il empêche la suppression de l'objet
8. Stockage
Q36. Quelle formulation décrit correctement la relation entre PV et PVC ?
- a) Le PVC est la ressource de stockage réelle, le PV est la demande de l'utilisateur
- b) Le PV représente la ressource de stockage disponible dans le cluster, le PVC est la demande formulée par l'utilisateur et liée ensuite à un PV
- c) PV et PVC sont deux noms d'un même objet
- d) Le PVC est obligatoirement créé par l'administrateur avant le PV
Q37. Que signifie exactement le mode d'accès ReadWriteOnce ?
- a) Le volume ne peut être monté qu'une seule fois dans la vie du cluster
- b) Le volume peut être monté en lecture et écriture par un seul nœud à la fois
- c) Le volume peut être monté en lecture et écriture par un seul Pod, quel que soit le nœud
- d) Le volume est en lecture seule après le premier montage
Q38. À quoi sert une StorageClass ?
- a) À classer les PV par ordre de priorité d'utilisation
- b) À décrire un type de stockage et permettre le provisionnement dynamique des PV lorsqu'un PVC est créé
- c) À limiter le volume de stockage consommé par un namespace
- d) À chiffrer les volumes montés dans les Pods
Q39. Un PVC est supprimé alors que le PV associé porte persistentVolumeReclaimPolicy: Retain. Que devient le PV ?
- a) Il est supprimé avec son contenu
- b) Il passe à l'état
Releasedet conserve ses données, sans être réutilisable automatiquement - c) Il est immédiatement rattaché au prochain PVC compatible
- d) Il repasse à l'état
Availableaprès nettoyage automatique
Q40. Quelle est la durée de vie d'un volume emptyDir ?
- a) Celle du cluster
- b) Celle du nœud
- c) Celle du Pod, le volume étant supprimé en même temps que lui
- d) Celle du conteneur, le volume étant recréé à chaque redémarrage de celui-ci
9. Ordonnancement et ressources
Q41. Comment fonctionne le couple taint et toleration ?
- a) Le taint est posé sur le Pod, la toleration sur le nœud
- b) Le taint est posé sur le nœud pour repousser les Pods, la toleration est déclarée sur le Pod pour l'autoriser à s'y placer
- c) Les deux sont posés sur le nœud
- d) Les deux sont posés sur le namespace
Q42. À quelle condition un Pod obtient-il la classe de qualité de service Guaranteed ?
- a) Il déclare uniquement des
limits - b) Tous ses conteneurs déclarent des
requestset deslimitségales, pour le CPU comme pour la mémoire - c) Il ne déclare ni
requestsnilimits - d) Il porte l'annotation
qos: guaranteed
Q43. Un conteneur dépasse la limite mémoire fixée dans resources.limits.memory. Que se passe-t-il ?
- a) Le conteneur est ralenti par le noyau, comme pour le CPU
- b) Le processus est tué par le noyau et le conteneur est marqué
OOMKilled, puis redémarré selon larestartPolicy - c) Le Pod est déplacé sur un nœud disposant de plus de mémoire
- d) La limite est automatiquement relevée
Q44. Quelle est la différence entre ResourceQuota et LimitRange ?
- a) ResourceQuota plafonne la consommation totale d'un namespace, LimitRange fixe des valeurs par défaut et des bornes par conteneur ou par Pod
- b) ResourceQuota s'applique au cluster entier, LimitRange à un nœud
- c) Les deux objets sont équivalents, seul le nom diffère
- d) ResourceQuota agit sur le CPU uniquement, LimitRange sur la mémoire uniquement
Q45. (plusieurs réponses) Quelles conditions sont nécessaires pour qu'un HorizontalPodAutoscaler basé sur l'utilisation CPU fonctionne ?
- a) Une source de métriques doit être installée, généralement
metrics-server - b) Les conteneurs ciblés doivent déclarer une
requests.cpu - c) La ressource pilotée doit exposer une sous-ressource
scale, comme un Deployment ou un StatefulSet - d) Le cluster doit disposer d'au moins trois nœuds
10. Sondes, sécurité et dépannage
Q46. Que se passe-t-il lorsque la readinessProbe d'un conteneur échoue durablement ?
- a) Le conteneur est redémarré
- b) Le Pod est retiré des endpoints des Services qui le sélectionnent, mais il n'est pas redémarré
- c) Le Pod est supprimé puis replanifié
- d) Rien, la sonde n'est qu'informative
Q47. Que se passe-t-il lorsque la livenessProbe d'un conteneur échoue au-delà du seuil configuré ?
- a) Le conteneur est redémarré par le kubelet
- b) Le Pod est retiré des endpoints du Service sans redémarrage
- c) Le nœud est marqué
NotReady - d) Le Deployment déclenche un rollback
Q48. Vous devez accorder à un utilisateur les droits définis par un ClusterRole, mais uniquement dans le namespace dev. Que faites-vous ?
- a) Vous créez un ClusterRoleBinding référençant ce ClusterRole
- b) Vous créez un RoleBinding dans le namespace
devqui référence ce ClusterRole - c) Vous recopiez le ClusterRole en Role, seule solution possible
- d) Vous ajoutez le champ
namespacedans le ClusterRole
Q49. Un conteneur vient de redémarrer après un plantage. Quelle commande affiche les logs de l'instance précédente ?
- a)
kubectl logs api-7d9f --previous - b)
kubectl logs api-7d9f --history - c)
kubectl describe pod api-7d9f --logs - d)
kubectl get logs api-7d9f -o old
Q50. Un Pod reste bloqué et vous cherchez le motif exact du blocage, par exemple FailedScheduling ou ImagePullBackOff. Quelle commande consultez-vous en priorité ?
- a)
kubectl get pod api-7d9f -o wide - b)
kubectl describe pod api-7d9f, sectionEvents - c)
kubectl top pod api-7d9f - d)
kubectl api-resources