Kubernetes est un système open-source d'orchestration de conteneurs, conçu pour automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Son architecture est basée sur un modèle client-serveur distribué, principalement composé d'un Control Plane et de Worker Nodes.
cloud-controller-manager
est optionnel et spécifique aux environnements cloud.Le Control Plane est le cerveau du cluster Kubernetes. Il prend des décisions globales sur le cluster (par exemple, le scheduling) et détecte et répond aux événements du cluster (par exemple, démarrer un nouveau pod lorsque le champ replicas
d'un déploiement n'est pas satisfait). Les composants du Control Plane peuvent être exécutés sur n'importe quelle machine du cluster, mais pour des raisons de simplicité, les scripts de démarrage placent généralement tous les composants du Control Plane sur la même machine (le "nœud maître" ou "master node"), qui n'exécute pas de conteneurs utilisateur. Pour la haute disponibilité, le Control Plane est souvent répliqué sur plusieurs machines.
Composant | Utilité |
---|---|
kube-apiserver |
Le Front-end du Control Plane. Expose l'API Kubernetes RESTful. C'est le point d'entrée principal pour toutes les interactions avec le cluster (via kubectl , UI, ou autres clients API). Il valide et configure les données pour les objets API (pods, services, etc.) et sert d'intermédiaire entre les autres composants. |
etcd |
La Base de Données du Cluster. Banque de données clé-valeur distribuée, cohérente et hautement disponible, utilisée comme stockage persistant pour toutes les données de configuration et l'état du cluster Kubernetes. Assure la persistance de l'état désiré et actuel du cluster. Les sauvegardes etcd sont cruciales. |
kube-scheduler |
Le Planificateur de Pods. Surveille les nouveaux pods créés (sans nœud assigné) via l'API Server et sélectionne un Worker Node approprié pour les exécuter. Les décisions de placement sont basées sur les besoins en ressources du pod, les contraintes matérielles/logicielles/politiques, les spécifications d'affinité et d'anti-affinité, la localité des données, etc. |
kube-controller-manager |
Le Gestionnaire de Contrôleurs. Exécute plusieurs processus contrôleurs en arrière-plan. Chaque contrôleur surveille l'état du cluster via l'API Server et tente de faire correspondre l'état actuel à l'état désiré. Exemples de contrôleurs : Node Controller (gère l'état des nœuds), Replication Controller/ReplicaSet Controller (maintient le nombre correct de pods), Endpoints Controller (popule l'objet Endpoints pour les Services), Service Account & Token Controllers (crée les comptes et tokens par défaut pour les namespaces). |
cloud-controller-manager (Optionnel) |
Le Gestionnaire de Cloud. Exécute des contrôleurs spécifiques au fournisseur de cloud. Permet de lier le cluster à l'API du fournisseur de cloud et sépare les composants interagissant avec la plateforme cloud des composants interagissant uniquement avec le cluster. Exemples : gestion des équilibreurs de charge cloud (Load Balancers), des volumes de stockage cloud, des routes réseau spécifiques au cloud. Si Kubernetes n'est pas exécuté dans un environnement cloud, ce composant n'est pas nécessaire. |
Les Worker Nodes (parfois appelés "minions" dans d'anciennes documentations) sont les machines (VMs, physiques) où les applications conteneurisées (Pods) s'exécutent réellement. Chaque nœud est géré par le Control Plane et contient les services nécessaires pour exécuter des Pods.
Composant | Utilité |
---|---|
kubelet |
L'Agent du Nœud. Un agent qui s'exécute sur chaque Worker Node du cluster. Il communique avec le kube-apiserver et s'assure que les conteneurs décrits dans les PodSpecs (fournis par l'API Server) sont démarrés et s'exécutent correctement sur le nœud. Il enregistre également le nœud auprès de l'API Server et rapporte son état de santé. |
kube-proxy |
Le Proxy Réseau. Un proxy réseau qui s'exécute sur chaque Worker Node. Il maintient les règles réseau sur les nœuds (par exemple, via iptables ou ipvs ) qui permettent la communication réseau vers les Pods depuis l'intérieur ou l'extérieur du cluster. Il implémente une partie du concept de Service Kubernetes, en gérant la redirection du trafic réseau (load balancing simple) vers les bons Pods pour un Service donné. |
Container Runtime | L'Exécuteur de Conteneurs. Le logiciel responsable de l'exécution des conteneurs. Kubernetes supporte plusieurs runtimes via l'interface CRI (Container Runtime Interface), les plus courants étant containerd et CRI-O . Docker Engine était également supporté via dockershim (maintenant déprécié et supprimé des versions récentes de Kubernetes). Le runtime télécharge les images de conteneurs et les exécute. |
Les addons sont des pods et services qui implémentent des fonctionnalités de cluster. Bien qu'ils ne soient pas strictement nécessaires au fonctionnement de base, beaucoup sont considérés comme essentiels pour un cluster pleinement fonctionnel.
NetworkPolicy
de Kubernetes pour contrôler le trafic réseau entre les pods.