Skip to content

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) requests est le maximum, limits est le minimum
  • B) requests est le minimum garanti, limits est le maximum autorisé
  • C) Ils sont identiques
  • D) requests est pour le CPU, limits est 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.