Ce document résume les divers composants binaires requis pour livrer un cluster Kubernetes fonctionnel.
Les composants Master fournissent le plan de contrôle (control plane) du cluster.
Les composants Master prennent des décisions globales à propos du cluster (par exemple, la planification (scheduling)).
Ils détectent et répondent aux événements du cluster (par exemple, démarrer un nouveau PodLe plus petit et le plus simple des objets Kubernetes. Un Pod est un ensemble de conteneurs fonctionnant sur votre cluster. lorsque le champ replicas
d’un déploiement n’est pas satisfait).
Les composants Master peuvent être exécutés sur n’importe quelle machine du cluster. Toutefois, par soucis de simplicité, les scripts de mise en route démarrent typiquement tous les composants master sur la même machine et n’exécutent pas de conteneurs utilisateur sur cette machine. Voir Construire des Clusters en Haute Disponibilité pour une configuration d’exemple en multi-master-VM.
Composant sur le master qui expose l’API Kubernetes. Il s’agit du front-end pour le plan de contrôle Kubernetes.
Il est conçu pour une mise à l’échelle horizontale, ce qui veut dire qu’il met à l’échelle en déployant des instances supplémentaires. Voir Construire des Clusters en Haute Disponibilité.
Base de données clé-valeur consistante et hautement disponible utilisée comme mémoire de sauvegarde pour toutes les données du cluster.
Si votre cluster Kubernetes utilise etcd comme mémoire de sauvegarde, assurez-vous d’avoir un plan de back up pour ces données.
Vous pouvez trouver plus d’informations à propos d’etcd dans la documentation officielle.
Composant sur le master qui surveille les pods nouvellement créés qui ne sont pas assignés à un nœud et sélectionne un nœud sur lequel ils vont s’exécuter.
Les facteurs pris en compte pour les décisions de planification (scheduling) comprennent les exigences individuelles et collectives en ressources, les contraintes matérielles/logicielles/politiques, les spécifications d’affinité et d’anti-affinité, la localité des données, les interférences entre charges de travail et les dates limites.
Composant du master qui exécute les contrôleursBoucle de contrôle surveillant l’état partagé du cluster à travers l’apiserver et effectuant des changements en essayant de déplacer l’état actuel vers l’état désiré. .
Logiquement, chaque contrôleurBoucle de contrôle surveillant l’état partagé du cluster à travers l’apiserver et effectuant des changements en essayant de déplacer l’état actuel vers l’état désiré. est un processus à part mais, pour réduire la compléxité, les contrôleurs sont tous compilés dans un seul binaire et s’exécutent dans un seul processus.
Ces contrôleurs incluent :
Le cloud-controller-manager exécute les contrôleurs qui interagissent avec les fournisseurs cloud sous-jacents. Le binaire du cloud-controller-manager est une fonctionnalité alpha introduite dans la version 1.6 de Kubernetes.
Le cloud-controller-manager exécute seulement les boucles spécifiques des fournisseurs cloud.
Vous devez désactiver ces boucles de contrôleurs dans le kube-controller-manager.
Vous pouvez désactiver les boucles de contrôleurs en définissant la valeur du flag --cloud-provider
à external
lors du démarrage du kube-controller-manager.
Le cloud-controller-manager permet au code du fournisseur cloud et au code de Kubernetes d’évoluer indépendamment l’un de l’autre. Dans des versions antérieures, le code de base de Kubernetes dépendait du code spécifique du fournisseur cloud pour la fonctionnalité. Dans des versions ultérieures, le code spécifique des fournisseurs cloud devrait être maintenu par les fournisseurs cloud eux-mêmes et lié au cloud-controller-manager lors de l’exécution de Kubernetes.
Les contrôleurs suivants ont des dépendances vers des fournisseurs cloud :
Les composants de nœud (Node components) s’exécutent sur chaque nœud, en maintenant les pods en exécution et en fournissant l’environnement d’exécution Kubernetes.
Un agent qui s’exécute sur chaque nœud du cluster. Il s’assure que les conteneurs fonctionnent dans un pod.
Le kubelet prend un ensemble de PodSpecs fournis par divers mécanismes et s’assure du fonctionnement et de la santé des conteneurs décrits dans ces PodSpecs. Le kubelet ne gère que les conteneurs créés par Kubernetes.
kube-proxy est un proxy réseau qui s’exécute sur chaque nœud du cluster et implémente une partie du concept Kubernetes de ServiceA way to expose an application running on a set of Pods as a network service. .
kube-proxy maintient les règles réseau sur les nœuds. Ces règles réseau permettent une communication réseau vers les Pods depuis des sessions réseau à l’intérieur ou à l’extérieur du cluster.
kube-proxy utilise la couche de filtrage de paquets du système d’exploitation s’il y en a une et qu’elle est disponible. Sinon, kube-proxy transmet le trafic lui-même.
L’environnement d’exécution de conteneurs est le logiciel responsable de l’exécution des conteneurs.
Kubernetes est compatible avec plusieurs environnements d’exécution de conteneur: Docker, containerd, cri-o, rktlet ainsi que toute implémentation de Kubernetes CRI (Container Runtime Interface).
Les addons utilisent les ressources Kubernetes (DaemonSetS’assure qu’une copie d’un Pod s’exécute sur un ensemble de nœuds d’un cluster.
, DéploiementObjet API gérant une application répliquée.
, etc)
pour implémenter des fonctionnalités cluster. Comme ces derniers fournissent des fonctionnalités au niveau
du cluster, les ressources dans des namespaces pour les addons appartiennent au namespace kube-system
.
Les addons sélectionnés sont décrits ci-dessous. Pour une liste étendue des addons disponibles, voir la page Addons.
Tandis que les autres addons ne sont pas strictement requis, tous les clusters Kubernetes devraient avoir un DNS cluster car de nombreux exemples en dépendent.
Le DNS Cluster est un serveur DNS, en plus des autres serveurs DNS dans votre environnement, qui sert les enregistrements DNS pour les services Kubernetes.
Les conteneurs démarrés par Kubernetes incluent automatiquement ce serveur DNS dans leurs recherches DNS.
Le Dashboard est une interface utilisateur web à but général pour les clusters Kubernetes. Il permet aux utilisateurs de gérer et de dépanner aussi bien des applications s’exécutant dans le cluster que le cluster lui-même.
La surveillance des ressources de conteneur enregistre des métriques chronologiques génériques à propos des conteneurs dans une base de données centrale et fournit une interface utilisateur pour parcourir ces données.
Un mécanisme de logging au niveau cluster est chargé de sauvegarder les logs des conteneurs dans un magasin de logs central avec une interface de recherche/navigation.
Cette page est elle utile ?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.