AccueilBlogTest technique Kubernetes pour la data : pods, nodes, GKE, orchestration
Guide recrutement data

Test technique Kubernetes pour la data : pods, nodes, GKE, orchestration

Kubernetes s'impose dans les équipes data pour orchestrer les pipelines, déployer des APIs ML et gérer les workloads Spark ou Airflow. Voici les concepts qu'on teste pour valider un Data Engineer sur K8s.

Data Builder·Juin 2025·8 min de lecture·Data Engineer

Kubernetes (K8s) est devenu incontournable dans les architectures data cloud. Qu'il s'agisse d'orchestrer Airflow sur GKE, de déployer une API FastAPI de scoring ML, ou de lancer des jobs Spark sur Kubernetes, les Data Engineers doivent maîtriser les concepts fondamentaux.

1Concepts fondamentaux

Question discriminante

Quelle est la différence entre un Pod, un Node et un Cluster ? Que se passe-t-il si un Pod tombe ?

  • Pod — unité de base Kubernetes. Contient un ou plusieurs conteneurs qui partagent le réseau et le stockage. Éphémère par nature
  • Node — machine virtuelle ou physique qui héberge des Pods. Contient : Kubelet (communication avec le plan de contrôle), Container Runtime (Docker/containerd), Kube-Proxy (réseau)
  • Cluster — ensemble d'un plan de contrôle et de nodes. Le plan de contrôle contient : kube-apiserver, etcd (stockage d'état), kube-scheduler, kube-controller-manager
  • Deployment — décrit l'état désiré (nombre de replicas, image). Si un Pod tombe, le Deployment le recrée automatiquement
  • Service — abstraction stable pour exposer des Pods (ClusterIP, NodePort, LoadBalancer)

Distinction clé : un Pod est éphémère — il peut être supprimé et recréé à tout moment. Les données persistantes doivent être dans des Persistent Volumes, pas dans le Pod lui-même.

2Architecture du cluster

Question discriminante

Quel est le rôle d'etcd dans un cluster Kubernetes ? Que se passe-t-il si etcd devient indisponible ?

# Déploiement minimal d'une API data en K8s apiVersion: apps/v1 kind: Deployment metadata: name: api-scoring-ml spec: replicas: 3 selector: matchLabels: app: api-scoring template: metadata: labels: app: api-scoring spec: containers: - name: api image: gcr.io/mon-projet/api-scoring:v1.2 resources: requests: memory: "512Mi" cpu: "250m" limits: memory: "1Gi" cpu: "500m" env: - name: MODEL_PATH valueFrom: secretKeyRef: name: ml-secrets key: model-gcs-path
  • etcd — stockage clé-valeur de l'état du cluster. Si etcd est indisponible, le cluster ne peut plus être modifié (mais les workloads en cours continuent)
  • kube-scheduler — attribue les Pods aux Nodes selon les ressources disponibles et les contraintes (affinity, taints/tolerations)
  • Namespaces — isolation logique dans un cluster (dev, staging, prod)
  • ConfigMaps et Secrets — configuration et credentials injectés dans les Pods (ne pas coder en dur dans l'image)

3GKE : Autopilot vs Standard

Question discriminante

Dans quel cas choisissez-vous GKE Autopilot plutôt que Standard ?

GKE AutopilotGKE Standard
Gestion des nodesAutomatique (Google)Manuelle
FacturationPar Pod (ressources demandées)Par Node (ressources allouées)
ScalingAutomatique et transparentConfigurable manuellement
OS des nodesContainer-Optimized OS uniquementCOS, Ubuntu, Windows Server
Sécurité par défautWorkload Identity, démarrage sécurisé inclusConfigurable, plus de contrôle
Idéal pourÉquipes sans infra spécialisée, workloads variablesWorkloads spécialisés, contrôle avancé

4Cas d'usage data sur Kubernetes

Question discriminante

Comment déploieriez-vous Airflow sur Kubernetes ? Quel executor utiliseriez-vous ?

  • Airflow sur K8s — KubernetesExecutor : un Pod par tâche, isolation maximale, scaling automatique. Déploiement via Helm chart officiel
  • Spark sur K8s — spark-submit en mode cluster, driver et executors dans des Pods dédiés, pas besoin de YARN
  • APIs ML (FastAPI/Flask) — Deployment + Service + HorizontalPodAutoscaler pour le scaling automatique selon la charge
  • Jobs batch — CronJob K8s pour les pipelines planifiés simples sans Airflow
  • MLflow / Ray — serveurs de tracking ou de calcul distribué déployés sur GKE

5Déploiement et configuration

Question discriminante

Comment gérez-vous les mises à jour sans downtime (rolling update) et le rollback en cas de problème ?

# Rolling update automatique (stratégie par défaut) kubectl set image deployment/api-scoring api=gcr.io/mon-projet/api-scoring:v1.3 # Vérifier le statut kubectl rollout status deployment/api-scoring # Rollback vers la version précédente kubectl rollout undo deployment/api-scoring # Helm : déploiement et rollback helm upgrade api-scoring ./chart --set image.tag=v1.3 helm rollback api-scoring 1 # revenir à la release 1 # Ressources requests/limits : obligatoires sur GKE Autopilot resources: requests: memory: "512Mi" cpu: "250m" limits: memory: "1Gi"
  • Rolling update — mise à jour progressive sans interruption de service, configurable avec maxSurge et maxUnavailable
  • Requests vs Limits — requests pour le scheduling (ressources garanties), limits pour le maximum autorisé
  • Liveness et Readiness probes — K8s vérifie que le Pod répond avant d'envoyer du trafic
  • Helm — gestionnaire de packages K8s, indispensable pour déployer des applications complexes (Airflow, Spark, etc.)

6Sécurité et optimisation des coûts

  • Workload Identity — lier un Service Account K8s à un Service Account Google Cloud pour accéder à GCS, BigQuery sans stocker de clés JSON
  • Secrets management — Google Secret Manager intégré via le Secret Store CSI Driver, pas de Secrets K8s en clair
  • Spot/Preemptible nodes — réduction des coûts de 60-90% pour les workloads batch tolérants aux interruptions
  • Vertical Pod Autoscaler (VPA) — ajustement automatique des requests/limits selon l'utilisation réelle
  • Namespaces + RBAC — isolation des équipes et contrôle des accès au cluster

7Grille par niveau

NiveauMaîtrise attendueSignal GONO-GO
JuniorConcepts Pod/Node/Cluster, kubectl de base, Deployments, ServicesSait déployer une image Docker sur K8s, comprend le rôle du schedulerNe sait pas ce qu'est un Pod, confond Node et Pod
ConfirméGKE Autopilot vs Standard, Helm, ConfigMaps/Secrets, rolling updatesA déployé sur GKE, utilise Helm, configure les requests/limits, sait faire un rollbackN'a jamais utilisé Helm, ne connaît pas GKE Autopilot
SeniorAirflow/Spark sur K8s, Workload Identity, autoscaling, optimisation coûtsA déployé Airflow avec KubernetesExecutor, utilise Workload Identity, a configuré des Spot nodesNe sait pas déployer Airflow sur K8s, ne connaît pas Workload Identity
LeadArchitecture multi-cluster, GitOps (ArgoCD/Flux), standards d'équipe, FinOpsA mis en place une stratégie GitOps, a optimisé les coûts GKE de son équipeNe peut pas expliquer sa stratégie de gestion du cluster en production

Vous recrutez un Data Engineer cloud ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.

Tester gratuitementRéserver un appel