Sujets Avancés et Architecture de Kubernetes
Expliquez le concept d'un Opérateur Kubernetes et donnez un exemple d'utilisation.
Réponse :
Un Opérateur Kubernetes est une méthode pour empaqueter, déployer et gérer une application native à Kubernetes. Il étend l'API Kubernetes pour créer, configurer et gérer des instances d'applications complexes. Vous utiliseriez un Opérateur pour des applications stateful comme les bases de données (par exemple, Cassandra, MySQL) afin d'automatiser des tâches telles que les sauvegardes, les mises à niveau et la mise à l'échelle.
Décrivez le rôle d'une Définition de Ressource Personnalisée (Custom Resource Definition - CRD) dans Kubernetes.
Réponse :
Une Définition de Ressource Personnalisée (CRD) vous permet de définir vos propres ressources personnalisées dans Kubernetes, étendant ainsi l'API Kubernetes. Cela vous permet de stocker et de récupérer des données structurées que Kubernetes peut gérer. Les CRDs sont fondamentales pour la création d'Opérateurs et la définition d'objets spécifiques à une application.
Réponse :
Le serveur API gère l'authentification via diverses méthodes telles que les certificats clients, les jetons porteurs (bearer tokens) ou les jetons de compte de service. Après l'authentification, l'autorisation est effectuée à l'aide de modules tels que RBAC (Role-Based Access Control), l'autorisation de Nœud (Node authorization) ou ABAC (Attribute-Based Access Control). RBAC est le plus courant, définissant des rôles avec des permissions et les liant à des utilisateurs ou des comptes de service.
Quelle est la différence entre un DaemonSet et un Deployment dans Kubernetes ?
Réponse :
Un Deployment gère un ensemble de pods identiques, garantissant qu'un nombre désiré de répliques sont en cours d'exécution dans le cluster, généralement pour des applications stateless. Un DaemonSet garantit que tous les nœuds (ou certains d'entre eux) exécutent une copie d'un pod, ce qui est utile pour les services au niveau du cluster tels que les collecteurs de logs (par exemple, Fluentd) ou les agents de surveillance (par exemple, Node Exporter) qui doivent s'exécuter sur chaque nœud.
Expliquez le concept des Politiques de Sécurité des Pods (Pod Security Policies - PSPs) et pourquoi elles sont dépréciées.
Réponse :
Les Politiques de Sécurité des Pods (PSPs) étaient un contrôleur d'admission qui appliquait des normes de sécurité aux pods et aux conteneurs. Elles permettaient aux administrateurs de cluster de contrôler des aspects sensibles à la sécurité tels que le mode privilégié, l'accès au réseau hôte et les types de volumes. Les PSPs sont dépréciées au profit de l'Admission de Sécurité des Pods (Pod Security Admission - PSA) et de moteurs de politiques comme OPA Gatekeeper, qui offrent un contrôle plus flexible et granulaire.
Réponse :
La haute disponibilité pour le plan de contrôle est obtenue en exécutant plusieurs instances du serveur API, d'etcd, du Controller Manager et du Scheduler. etcd s'exécute généralement en tant que cluster basé sur un quorum (par exemple, 3 ou 5 nœuds). Un équilibreur de charge est placé devant les serveurs API pour distribuer le trafic et assurer le basculement (failover).
Réponse :
Un webhook d'admission mutateur est un rappel HTTP qui peut modifier les requêtes adressées au serveur API Kubernetes avant qu'elles ne soient persistées. Il peut injecter des conteneurs sidecar, ajouter des labels/annotations, ou définir des valeurs par défaut pour des champs. Par exemple, il peut injecter automatiquement un sidecar istio-proxy dans les pods pour l'intégration de la mesh de services.
Décrivez le rôle d'etcd dans un cluster Kubernetes.
Réponse :
etcd sert de magasin clé-valeur cohérent et hautement disponible pour Kubernetes. Il stocke toutes les données du cluster, y compris la configuration, l'état et les métadonnées de tous les objets Kubernetes (pods, déploiements, services, etc.). Il est essentiel au fonctionnement du cluster, et sa disponibilité a un impact direct sur la santé du cluster.
Réponse :
Les Politiques Réseau (Network Policies) de Kubernetes sont des spécifications qui définissent comment les groupes de pods sont autorisés à communiquer entre eux et avec des points d'extrémité externes. Elles sont implémentées par un plugin réseau (CNI) qui prend en charge NetworkPolicy, tel que Calico, Cilium ou Weave Net. Le plugin CNI traduit ces politiques en règles de pare-feu.
Réponse :
Les Taints sont appliqués aux nœuds, les marquant comme "inappropriés" pour certains pods, à moins que ces pods n'aient des Tolerations correspondantes. Les Tolerations sont appliquées aux pods, leur permettant d'être planifiés sur des nœuds taints. Ce mécanisme est utilisé pour réserver des nœuds pour des charges de travail spécifiques (par exemple, des nœuds GPU) ou pour évincer des pods de nœuds non sains.