Quiz - Formation Kubernetes
Testez vos connaissances sur Kubernetes. Les réponses sont dans le fichier quiz-reponses.md.
Section 1 : Introduction et historique
Question 1.1
Quelle est l'origine du nom "Kubernetes" ?
- A) Un acronyme anglais
- B) Le nom d'un projet interne de Google
- C) Un mot grec signifiant "timonier" ou "pilote"
- D) Le nom du créateur du projet
Question 1.2
Pourquoi le logo Kubernetes a-t-il 7 branches au lieu de 6 ?
- A) Une erreur de design
- B) Un hommage à Seven of Nine de Star Trek
- C) Pour représenter les 7 composants du control plane
- D) Pour différencier K8s de Docker
Question 1.3
Quel outil interne de Google a inspiré Kubernetes ?
- A) BigTable
- B) Borg
- C) Spanner
- D) MapReduce
Question 1.4
Que signifie "k8s" ?
- A) Kubernetes version 8
- B) K + 8 lettres + s (abréviation de Kubernetes)
- C) Un fork de Kubernetes
- D) Kubernetes pour systèmes 8-bit
Section 2 : Architecture et composants
Question 2.1
Quel composant du Control Plane stocke l'état du cluster ?
- A) API Server
- B) Scheduler
- C) etcd
- D) Controller Manager
Question 2.2
Quel est le rôle du Scheduler ?
- A) Gérer les secrets du cluster
- B) Affecter les pods aux nœuds
- C) Exposer l'API REST
- D) Redémarrer les containers défaillants
Question 2.3
Quel composant s'exécute sur chaque Worker Node et gère les pods localement ?
- A) kube-proxy
- B) kubelet
- C) containerd
- D) CoreDNS
Question 2.4
Depuis quelle version de Kubernetes le support de Docker (dockershim) a-t-il été retiré ?
- A) 1.20
- B) 1.22
- C) 1.24
- D) 1.26
Question 2.5
Quel algorithme de consensus utilise etcd ?
- A) Paxos
- B) Raft
- C) PBFT
- D) Nakamoto
Question 2.6
Quel est le format DNS standard pour accéder à un service dans Kubernetes ?
- A)
<service>.<cluster>.local - B)
<service>.<namespace>.svc.cluster.local - C)
<namespace>.<service>.k8s.local - D)
<service>.kubernetes.internal
Section 3 : Pods et Deployments
Question 3.1
Quelle est l'unité de base de déploiement dans Kubernetes ?
- A) Container
- B) Pod
- C) Deployment
- D) ReplicaSet
Question 3.2
Que signifie le statut "Pending" pour un Pod ?
- A) Le pod est en cours d'exécution
- B) Le pod attend d'être planifié sur un nœud
- C) Le pod a terminé avec succès
- D) Le pod a échoué
Question 3.3
Quelle probe vérifie si un container est prêt à recevoir du trafic ?
- A) Liveness Probe
- B) Readiness Probe
- C) Startup Probe
- D) Health Probe
Question 3.4
Quelle est la différence principale entre un Pod et un Deployment ?
- A) Un Pod peut contenir plusieurs containers, pas un Deployment
- B) Un Deployment gère le cycle de vie et la réplication des Pods
- C) Un Pod est persistant, un Deployment est éphémère
- D) Il n'y a pas de différence
Question 3.5
Quelle commande permet de voir l'historique des révisions d'un Deployment ?
- A)
kubectl get deployment history - B)
kubectl rollout history deployment/<name> - C)
kubectl describe deployment <name> - D)
kubectl logs deployment/<name>
Section 4 : Services et réseau
Question 4.1
Quel type de Service expose une application uniquement à l'intérieur du cluster ?
- A) NodePort
- B) LoadBalancer
- C) ClusterIP
- D) ExternalName
Question 4.2
Quel type de Service est utilisé pour exposer une application via un load balancer cloud ?
- A) ClusterIP
- B) NodePort
- C) LoadBalancer
- D) Ingress
Question 4.3
Comment un Service sélectionne-t-il les Pods à exposer ?
- A) Par leur nom
- B) Par leurs labels
- C) Par leur namespace
- D) Par leur IP
Question 4.4
Quelle commande permet de créer un tunnel local vers un pod ?
- A)
kubectl tunnel <pod> - B)
kubectl connect <pod> - C)
kubectl port-forward <pod> <local>:<pod> - D)
kubectl proxy <pod>
Section 5 : Scaling et self-healing
Question 5.1
Que signifie la philosophie "Cattle not Pets" ?
- A) Les serveurs doivent être nommés avec des noms d'animaux
- B) Les pods sont remplaçables et éphémères, pas uniques
- C) Kubernetes est conçu pour les fermes de serveurs
- D) Les containers doivent être légers comme du bétail
Question 5.2
Quel objet Kubernetes permet le scaling automatique basé sur les métriques CPU/mémoire ?
- A) ReplicaSet
- B) Deployment
- C) HPA (Horizontal Pod Autoscaler)
- D) DaemonSet
Question 5.3
Quelle stratégie de déploiement permet de mettre à jour les pods progressivement ?
- A) Recreate
- B) RollingUpdate
- C) BlueGreen
- D) Canary
Question 5.4
Quelle commande permet de revenir à la version précédente d'un Deployment ?
- A)
kubectl rollout revert deployment/<name> - B)
kubectl rollout undo deployment/<name> - C)
kubectl rollback deployment/<name> - D)
kubectl restore deployment/<name>
Section 6 : Objets avancés
Question 6.1
Quel namespace contient les composants système de Kubernetes ?
- A) default
- B) kube-public
- C) kube-system
- D) kube-node-lease
Question 6.2
Quel objet garantit qu'un pod s'exécute sur chaque nœud du cluster ?
- A) ReplicaSet
- B) StatefulSet
- C) DaemonSet
- D) Deployment
Question 6.3
Quel objet est adapté pour les applications avec état (bases de données) ?
- A) Deployment
- B) ReplicaSet
- C) StatefulSet
- D) DaemonSet
Question 6.4
Quelle est la différence entre un Job et un CronJob ?
- A) Un Job est plus rapide qu'un CronJob
- B) Un Job s'exécute une fois, un CronJob s'exécute selon un planning
- C) Un CronJob ne peut pas échouer
- D) Il n'y a pas de différence
Question 6.5
Comment stocker de la configuration non-sensible dans Kubernetes ?
- A) Secret
- B) ConfigMap
- C) Volume
- D) Annotation
Section 7 : Ressources et affectation
Question 7.1
Quelle est la différence entre requests et limits pour les ressources ?
- A)
requestsest le maximum,limitsest le minimum - B)
requestsest le minimum garanti,limitsest le maximum autorisé - C) Ils sont identiques
- D)
requestsest pour le CPU,limitsest pour la mémoire
Question 7.2
Que signifie 500m pour une ressource CPU ?
- A) 500 megabytes
- B) 500 millicores (0.5 CPU)
- C) 500 minutes
- D) 500 machines
Question 7.3
Que se passe-t-il quand un container dépasse sa limits.memory ?
- A) Il est throttlé (ralenti)
- B) Il est OOMKilled (tué)
- C) Rien, c'est une limite souple
- D) Le nœud redémarre
Question 7.4
Quelle classe QoS est assignée à un pod dont requests = limits ?
- A) BestEffort
- B) Burstable
- C) Guaranteed
- D) Premium
Question 7.5
Quel mécanisme permet de "repousser" les pods d'un nœud ?
- A) nodeSelector
- B) Node Affinity
- C) Taints
- D) Pod Anti-Affinity
Question 7.6
Quel topologyKey utiliser pour s'assurer que des pods sont sur des nœuds différents ?
- A)
kubernetes.io/zone - B)
kubernetes.io/hostname - C)
kubernetes.io/region - D)
kubernetes.io/node
Section 8 : Sécurité
Question 8.1
Quel objet RBAC définit des permissions au niveau d'un namespace ?
- A) ClusterRole
- B) Role
- C) ClusterRoleBinding
- D) ServiceAccount
Question 8.2
Quelle commande permet de tester si un utilisateur peut effectuer une action ?
- A)
kubectl test permissions - B)
kubectl auth can-i <verb> <resource> --as=<user> - C)
kubectl check access - D)
kubectl rbac verify
Question 8.3
Les Network Policies nécessitent un CNI compatible. Lequel de ces CNI supporte les Network Policies ?
- A) Flannel (par défaut)
- B) Calico
- C) kubenet
- D) Aucun, c'est natif à Kubernetes
Question 8.4
Par défaut, comment sont stockés les Secrets dans Kubernetes ?
- A) Chiffrés avec AES-256
- B) Encodés en base64 (pas chiffrés)
- C) En clair
- D) Hashés avec SHA-256
Question 8.5
Quelle option du Security Context empêche l'exécution en root ?
- A)
allowPrivilegeEscalation: false - B)
runAsNonRoot: true - C)
readOnlyRootFilesystem: true - D)
privileged: false
Question 8.6
Quel objet limite les ressources totales d'un namespace ?
- A) LimitRange
- B) ResourceQuota
- C) PodSecurityPolicy
- D) NetworkPolicy
Section 9 : Monitoring
Question 9.1
Quel outil est le standard de facto pour la collecte de métriques dans Kubernetes ?
- A) Datadog
- B) Prometheus
- C) Nagios
- D) Zabbix
Question 9.2
Quel chart Helm installe Prometheus, Grafana et Alertmanager ensemble ?
- A) prometheus-operator
- B) kube-prometheus-stack
- C) monitoring-suite
- D) grafana-prometheus
Question 9.3
Quel objet Kubernetes permet à Prometheus de découvrir automatiquement les services à scraper ?
- A) ConfigMap
- B) ServiceMonitor
- C) PrometheusRule
- D) Endpoint
Question 9.4
Quelle requête PromQL affiche le nombre de restarts d'un pod ?
- A)
pod_restart_count - B)
kube_pod_container_status_restarts_total - C)
container_restarts - D)
kubernetes_pod_restarts
Section 10 : Ingress et Traefik
Question 10.1
Quel problème l'Ingress résout-il principalement ?
- A) Le stockage persistant
- B) Exposer plusieurs applications web via un seul point d'entrée avec des URLs propres
- C) Le scaling automatique des pods
- D) La communication entre pods
Question 10.2
Quel est le rôle d'un Ingress Controller ?
- A) Stocker les règles Ingress dans etcd
- B) Lire les objets Ingress et configurer le reverse proxy
- C) Générer automatiquement des certificats
- D) Load-balancer entre les nœuds
Question 10.3
Quel challenge Let's Encrypt permet d'obtenir des certificats wildcard (*.domain.com) ?
- A) HTTP-01
- B) DNS-01
- C) TLS-ALPN-01
- D) Les wildcards ne sont pas supportés
Question 10.4
Quelle annotation Traefik permet de spécifier le resolver de certificats ?
- A)
traefik.ingress.kubernetes.io/router.tls.certresolver - B)
kubernetes.io/tls-acme - C)
cert-manager.io/cluster-issuer - D)
traefik.io/certificate-provider
Question 10.5
Quel type de Service est généralement utilisé pour exposer un Ingress Controller ?
- A) ClusterIP
- B) NodePort
- C) LoadBalancer
- D) ExternalName
Section 11 : Talos et production
Question 11.1
Quelle est la principale caractéristique de Talos Linux ?
- A) Il a une interface graphique
- B) Il est immutable et n'a pas de SSH
- C) Il est basé sur Ubuntu
- D) Il nécessite plus de ressources que les autres OS
Question 11.2
Quel outil CLI est utilisé pour gérer un cluster Talos ?
- A) kubectl
- B) talosctl
- C) talosadm
- D) talos-cli
Question 11.3
Quelle commande Talos permet de récupérer le kubeconfig ?
- A)
talosctl get kubeconfig - B)
talosctl kubeconfig - C)
talosctl config export - D)
talosctl cluster config
Question 11.4
Pourquoi Talos est-il considéré comme "secure by default" ?
- A) Il utilise SELinux
- B) Il n'a pas de shell, pas de SSH, API mutuelle TLS uniquement
- C) Il chiffre tout le disque
- D) Il bloque tout le trafic réseau par défaut
Section 12 : Commandes kubectl
Question 12.1
Quelle commande affiche les pods de tous les namespaces ?
- A)
kubectl get pods --all - B)
kubectl get pods -A - C)
kubectl get pods --namespaces=all - D)
kubectl get pods -n *
Question 11.2
Quelle commande permet d'exécuter un shell interactif dans un pod ?
- A)
kubectl shell <pod> - B)
kubectl exec -it <pod> -- /bin/sh - C)
kubectl connect <pod> - D)
kubectl run shell <pod>
Question 11.3
Quelle commande affiche les événements récents du cluster ?
- A)
kubectl logs events - B)
kubectl get events - C)
kubectl describe cluster - D)
kubectl show events
Question 12.2
Quelle commande permet d'exécuter un shell interactif dans un pod ?
- A)
kubectl shell <pod> - B)
kubectl exec -it <pod> -- /bin/sh - C)
kubectl connect <pod> - D)
kubectl run shell <pod>
Question 12.3
Quelle commande affiche les événements récents du cluster ?
- A)
kubectl logs events - B)
kubectl get events - C)
kubectl describe cluster - D)
kubectl show events
Question 12.4
Quelle commande permet de voir la consommation CPU/mémoire des pods ?
- A)
kubectl resources pods - B)
kubectl top pods - C)
kubectl stats pods - D)
kubectl metrics pods
Question 12.5
Comment appliquer tous les manifestes d'un dossier ?
- A)
kubectl apply -f <dossier>/ - B)
kubectl create -r <dossier> - C)
kubectl deploy <dossier> - D)
kubectl install <dossier>
Section 13 : Debug
Question 13.1
Un pod est en état "ImagePullBackOff". Quelle est la cause probable ?
- A) Le pod manque de CPU
- B) L'image Docker n'existe pas ou n'est pas accessible
- C) Le pod a crashé
- D) Le nœud est plein
Question 13.2
Quelle commande affiche les détails et événements d'un pod ?
- A)
kubectl get pod <name> -o yaml - B)
kubectl describe pod <name> - C)
kubectl logs <name> - D)
kubectl inspect pod <name>
Question 13.3
Un Service ne route pas le trafic vers les pods. Quelle est la première chose à vérifier ?
- A) Les logs du Service
- B) Les endpoints du Service (
kubectl get endpoints) - C) La configuration DNS
- D) Les Network Policies
Question 13.4
Comment voir les logs d'un container qui a crashé et redémarré ?
- A)
kubectl logs <pod> --crashed - B)
kubectl logs <pod> --previous - C)
kubectl logs <pod> --old - D)
kubectl logs <pod> --restart
Questions bonus : Cas pratiques
Question B.1
Vous voulez déployer une base de données PostgreSQL avec des données persistantes. Quel objet Kubernetes est le plus adapté ?
- A) Deployment
- B) DaemonSet
- C) StatefulSet
- D) Job
Question B.2
Vous voulez que vos 3 réplicas d'une application soient répartis sur des nœuds différents pour la haute disponibilité. Quel mécanisme utiliser ?
- A) nodeSelector
- B) Taints
- C) Pod Anti-Affinity
- D) Node Affinity
Question B.3
Vous avez un nœud avec un GPU et vous voulez que seuls les pods de machine learning puissent y être schedulés. Quelle combinaison utiliser ?
- A) nodeSelector uniquement
- B) Taint sur le nœud + Toleration sur les pods ML
- C) Pod Affinity
- D) ResourceQuota
Question B.4
Un développeur a besoin d'accéder en lecture seule aux pods du namespace "dev", mais pas aux autres namespaces. Quels objets RBAC créer ?
- A) ClusterRole + ClusterRoleBinding
- B) Role + RoleBinding dans le namespace "dev"
- C) ServiceAccount uniquement
- D) NetworkPolicy
Question B.5
Vous voulez limiter un namespace à 10 pods maximum et 4 CPU au total. Quel objet utiliser ?
- A) LimitRange
- B) ResourceQuota
- C) PodSecurityPolicy
- D) NetworkPolicy
Bonne chance !
Vérifiez vos réponses dans quiz-reponses.md.