Skip to content

Commit 48766a9

Browse files
committed
Update French documentation for concept architecture
1 parent 7ba952a commit 48766a9

17 files changed

+1578
-374
lines changed
Lines changed: 202 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,205 @@
11
---
2-
title: Architecture de Kubernetes
3-
description: Architecture Kubernetes
2+
title: "Architecture du cluster"
43
weight: 30
4+
description: >
5+
Les concepts architecturaux derrière Kubernetes.
56
---
7+
8+
Un cluster Kubernetes est composé d'un plan de contrôle et d'un ensemble de machines de travail, appelées nœuds, qui exécutent des applications conteneurisées.
9+
Chaque cluster a besoin d'au moins un nœud de travail pour exécuter des Pods.
10+
11+
Les nœuds de travail hébergent les Pods qui sont les composants de la charge de travail de l'application.
12+
Le plan de contrôle gère les nœuds de travail et les Pods du cluster. Dans les environnements de production,
13+
le plan de contrôle s'exécute généralement sur plusieurs ordinateurs et un cluster
14+
exécute généralement plusieurs nœuds, offrant une tolérance aux pannes et une haute disponibilité.
15+
16+
Ce document décrit les différents composants nécessaires pour avoir un cluster Kubernetes complet et fonctionnel.
17+
18+
{{< figure src="/images/docs/kubernetes-cluster-architecture.svg" alt="Le plan de contrôle (kube-apiserver, etcd, kube-controller-manager, kube-scheduler) et plusieurs nœuds. Chaque nœud exécute un kubelet et kube-proxy."
19+
title="Composants du cluster Kubernetes"
20+
caption="**Remarque :** Ce diagramme présente une architecture de référence d'exemple pour un cluster Kubernetes. La répartition réelle des composants peut varier en fonction des configurations et des exigences spécifiques du cluster." class="diagram-large" >}}
21+
22+
## Composants du plan de contrôle
23+
24+
Les composants du plan de contrôle prennent des décisions globales sur le cluster (par exemple, la planification),
25+
ainsi que la détection et la réponse aux événements du cluster (par exemple, démarrer un nouveau
26+
{{< glossary_tooltip text="pod" term_id="pod">}} lorsque le champ `{{< glossary_tooltip text="replicas" term_id="replica" >}}` d'un déploiement
27+
n'est pas satisfait).
28+
29+
Les composants du plan de contrôle peuvent s'exécuter sur n'importe quelle machine du cluster. Cependant, pour simplifier, les scripts d'installation
30+
démarrent généralement tous les composants du plan de contrôle sur la même machine et n'exécutent pas de conteneurs utilisateur sur cette machine.
31+
Consultez [Création de clusters hautement disponibles avec kubeadm](/docs/setup/production-environment/tools/kubeadm/high-availability/)
32+
pour un exemple de configuration du plan de contrôle s'exécutant sur plusieurs machines.
33+
34+
### kube-apiserver
35+
36+
{{< glossary_definition term_id="kube-apiserver" length="all" >}}
37+
38+
### etcd
39+
40+
{{< glossary_definition term_id="etcd" length="all" >}}
41+
42+
### kube-scheduler
43+
44+
{{< glossary_definition term_id="kube-scheduler" length="all" >}}
45+
46+
### kube-controller-manager
47+
48+
{{< glossary_definition term_id="kube-controller-manager" length="all" >}}
49+
50+
Il existe de nombreux types de contrôleurs différents. Voici quelques exemples :
51+
52+
- Contrôleur de nœuds : Responsable de la détection et de la réponse lorsque les nœuds tombent en panne.
53+
- Contrôleur de tâches : Surveille les objets Job qui représentent des tâches ponctuelles, puis crée des Pods pour exécuter ces tâches jusqu'à leur achèvement.
54+
- Contrôleur EndpointSlice : Remplit les objets EndpointSlice (pour établir un lien entre les Services et les Pods).
55+
- Contrôleur ServiceAccount : Crée des comptes de service par défaut pour les nouveaux espaces de noms.
56+
57+
Ce qui précède n'est pas une liste exhaustive.
58+
59+
### cloud-controller-manager
60+
61+
{{< glossary_definition term_id="cloud-controller-manager" length="short" >}}
62+
63+
Le cloud-controller-manager exécute uniquement des contrôleurs spécifiques à votre fournisseur de cloud.
64+
Si vous exécutez Kubernetes sur vos propres serveurs ou dans un environnement d'apprentissage sur votre
65+
propre PC, le cluster n'a pas de cloud-controller-manager.
66+
67+
Comme pour kube-controller-manager, cloud-controller-manager combine plusieurs boucles de contrôle logiquement
68+
indépendantes en un seul binaire que vous exécutez en tant que processus unique. Vous pouvez mettre à l'échelle
69+
horizontalement (exécuter plusieurs copies) pour améliorer les performances ou pour aider à tolérer les pannes.
70+
71+
Les contrôleurs suivants peuvent avoir des dépendances vis-à-vis du fournisseur de cloud :
72+
73+
- Contrôleur de nœuds : Pour vérifier auprès du fournisseur de cloud si un nœud a été
74+
supprimé dans le cloud après avoir cessé de répondre
75+
- Contrôleur de routage : Pour configurer les routes dans l'infrastructure cloud sous-jacente
76+
- Contrôleur de service : Pour créer, mettre à jour et supprimer des équilibreurs de charge du fournisseur de cloud
77+
78+
## Composants du nœud
79+
80+
Les composants du nœud s'exécutent sur chaque nœud, maintenant les Pods en cours d'exécution et fournissant l'environnement d'exécution Kubernetes.
81+
82+
### kubelet
83+
84+
{{< glossary_definition term_id="kubelet" length="all" >}}
85+
86+
### kube-proxy (optionnel) {#kube-proxy}
87+
88+
{{< glossary_definition term_id="kube-proxy" length="all" >}}
89+
Si vous utilisez un [plugin réseau](#network-plugins) qui implémente le transfert de paquets pour les Services
90+
par lui-même, et fournissant un comportement équivalent à kube-proxy, alors vous n'avez pas besoin d'exécuter
91+
kube-proxy sur les nœuds de votre cluster.
92+
93+
### Runtime de conteneur
94+
95+
{{< glossary_definition term_id="container-runtime" length="all" >}}
96+
97+
## Add-ons
98+
99+
Les add-ons utilisent des ressources Kubernetes ({{< glossary_tooltip term_id="daemonset" >}},
100+
{{< glossary_tooltip term_id="deployment" >}}, etc.) pour implémenter des fonctionnalités de cluster.
101+
Étant donné qu'ils fournissent des fonctionnalités au niveau du cluster, les ressources des add-ons
102+
appartiennent à l'espace de noms `kube-system`.
103+
104+
Certains add-ons sélectionnés sont décrits ci-dessous ; pour une liste étendue d'add-ons disponibles,
105+
veuillez consulter [Add-ons](/docs/concepts/cluster-administration/addons/).
106+
107+
### DNS
108+
109+
Bien que les autres add-ons ne soient pas strictement nécessaires, tous les clusters Kubernetes devraient avoir
110+
[DNS de cluster](/docs/concepts/services-networking/dns-pod-service/), car de nombreux exemples en dépendent.
111+
112+
Le DNS de cluster est un serveur DNS, en plus des autres serveur(s) DNS de votre environnement,
113+
qui fournit des enregistrements DNS pour les services Kubernetes.
114+
115+
Les conteneurs démarrés par Kubernetes incluent automatiquement ce serveur DNS dans leurs recherches DNS.
116+
117+
### Interface utilisateur Web (Dashboard)
118+
119+
[Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) est une interface utilisateur basée sur le web,
120+
générale, pour les clusters Kubernetes. Il permet aux utilisateurs de gérer et de résoudre les problèmes des applications
121+
en cours d'exécution dans le cluster, ainsi que du cluster lui-même.
122+
123+
### Surveillance des ressources des conteneurs
124+
125+
[Surveillance des ressources des conteneurs](/docs/tasks/debug/debug-cluster/resource-usage-monitoring/)
126+
enregistre des métriques génériques de séries chronologiques sur les conteneurs dans une base de données centrale et fournit une interface utilisateur pour parcourir ces données.
127+
128+
### Journalisation au niveau du cluster
129+
130+
Un mécanisme de [journalisation au niveau du cluster](/docs/concepts/cluster-administration/logging/) est responsable
131+
de l'enregistrement des journaux des conteneurs dans un magasin de journaux central avec une interface de recherche/parcours.
132+
133+
### Plugins réseau
134+
135+
[Les plugins réseau](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins)
136+
sont des composants logiciels qui implémentent la spécification de l'interface réseau de conteneur (CNI).
137+
Ils sont responsables de l'allocation des adresses IP aux pods et de leur permettre de communiquer
138+
entre eux au sein du cluster.
139+
140+
## Variations de l'architecture
141+
142+
Bien que les composants principaux de Kubernetes restent cohérents, la manière dont ils sont déployés et
143+
gérés peut varier. Comprendre ces variations est crucial pour concevoir et maintenir
144+
des clusters Kubernetes répondant à des besoins opérationnels spécifiques.
145+
146+
### Options de déploiement du plan de contrôle
147+
148+
Les composants du plan de contrôle peuvent être déployés de plusieurs manières :
149+
150+
Déploiement traditionnel
151+
: Les composants du plan de contrôle s'exécutent directement sur des machines dédiées ou des machines virtuelles, souvent gérées en tant que services systemd.
152+
153+
Pods statiques
154+
: Les composants du plan de contrôle sont déployés en tant que Pods statiques, gérés par le kubelet sur des nœuds spécifiques.
155+
Il s'agit d'une approche courante utilisée par des outils tels que kubeadm.
156+
157+
Auto-hébergé
158+
: Le plan de contrôle s'exécute en tant que Pods au sein du cluster Kubernetes lui-même, gérés par des déploiements
159+
et des StatefulSets ou d'autres primitives Kubernetes.
160+
161+
Services Kubernetes gérés
162+
: Les fournisseurs de cloud abstraient souvent le plan de contrôle, en gérant ses composants dans le cadre de leur offre de services.
163+
164+
### Considérations pour le placement de la charge de travail
165+
166+
Le placement des charges de travail, y compris les composants du plan de contrôle, peut varier en fonction de la taille du cluster,
167+
des exigences de performance et des politiques opérationnelles :
168+
169+
- Dans les clusters plus petits ou de développement, les composants du plan de contrôle et les charges de travail des utilisateurs peuvent s'exécuter sur les mêmes nœuds.
170+
- Les clusters de production plus importants dédient souvent des nœuds spécifiques aux composants du plan de contrôle,
171+
les séparant des charges de travail des utilisateurs.
172+
- Certaines organisations exécutent des add-ons critiques ou des outils de surveillance sur les nœuds du plan de contrôle.
173+
174+
### Outils de gestion de cluster
175+
176+
Des outils tels que kubeadm, kops et Kubespray offrent différentes approches pour le déploiement et la gestion des clusters,
177+
chacun avec sa propre méthode de disposition et de gestion des composants.
178+
179+
La flexibilité de l'architecture de Kubernetes permet aux organisations d'adapter leurs clusters à des besoins spécifiques,
180+
en équilibrant des facteurs tels que la complexité opérationnelle, les performances et la charge de gestion.
181+
182+
### Personnalisation et extensibilité
183+
184+
L'architecture de Kubernetes permet une personnalisation significative :
185+
186+
- Des ordonnanceurs personnalisés peuvent être déployés pour travailler aux côtés de l'ordonnanceur Kubernetes par défaut ou pour le remplacer entièrement.
187+
- Les serveurs API peuvent être étendus avec des CustomResourceDefinitions et une agrégation d'API.
188+
- Les fournisseurs de cloud peuvent s'intégrer profondément à Kubernetes en utilisant le cloud-controller-manager.
189+
190+
La flexibilité de l'architecture de Kubernetes permet aux organisations d'adapter leurs clusters à des besoins spécifiques,
191+
en équilibrant des facteurs tels que la complexité opérationnelle, les performances et la charge de gestion.
192+
193+
## {{% heading "whatsnext" %}}
194+
195+
En savoir plus sur les sujets suivants :
196+
197+
- [Nœuds](/docs/concepts/architecture/nodes/) et
198+
[leur communication](/docs/concepts/architecture/control-plane-node-communication/)
199+
avec le plan de contrôle.
200+
- Les [contrôleurs](/docs/concepts/architecture/controller/) Kubernetes.
201+
- [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/), qui est l'ordonnanceur par défaut de Kubernetes.
202+
- La [documentation officielle](https://etcd.io/docs/) d'Etcd.
203+
- Plusieurs [runtimes de conteneurs](/docs/setup/production-environment/container-runtimes/) dans Kubernetes.
204+
- Intégration avec les fournisseurs de cloud en utilisant [cloud-controller-manager](/docs/concepts/architecture/cloud-controller/).
205+
- Commandes [kubectl](/docs/reference/generated/kubectl/kubectl-commands).
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
---
2+
title: À propos de cgroup v2
3+
content_type: concept
4+
weight: 50
5+
---
6+
7+
<!-- overview -->
8+
9+
Sur Linux, les {{< glossary_tooltip text="groupes de contrôle" term_id="cgroup" >}}
10+
limitent les ressources allouées aux processus.
11+
12+
Le {{< glossary_tooltip text="kubelet" term_id="kubelet" >}} et le
13+
runtime de conteneur sous-jacent doivent interagir avec les cgroups pour appliquer
14+
[la gestion des ressources pour les pods et les conteneurs](/docs/concepts/configuration/manage-resources-containers/), ce qui
15+
inclut les demandes et les limites de CPU/mémoire pour les charges de travail conteneurisées.
16+
17+
Il existe deux versions de cgroups sur Linux : cgroup v1 et cgroup v2. cgroup v2 est
18+
la nouvelle génération de l'API `cgroup`.
19+
20+
<!-- body -->
21+
22+
23+
## Qu'est-ce que cgroup v2 ? {#cgroup-v2}
24+
{{< feature-state for_k8s_version="v1.25" state="stable" >}}
25+
26+
cgroup v2 est la prochaine version de l'API `cgroup` de Linux. cgroup v2 offre un
27+
système de contrôle unifié avec des capacités de gestion des ressources améliorées.
28+
29+
30+
cgroup v2 propose plusieurs améliorations par rapport à cgroup v1, telles que :
31+
32+
- Conception d'une hiérarchie unifiée unique dans l'API
33+
- Délégation plus sûre des sous-arbres aux conteneurs
34+
- Nouvelles fonctionnalités telles que [Pressure Stall Information](https://www.kernel.org/doc/html/latest/accounting/psi.html)
35+
- Gestion améliorée de l'allocation des ressources et de l'isolation sur plusieurs ressources
36+
- Comptabilité unifiée pour différents types d'allocations de mémoire (mémoire réseau, mémoire du noyau, etc.)
37+
- Comptabilité des modifications de ressources non immédiates, telles que les écritures de cache de pages
38+
39+
Certaines fonctionnalités de Kubernetes utilisent exclusivement cgroup v2 pour une
40+
gestion des ressources et une isolation améliorées. Par exemple, la fonctionnalité
41+
[MemoryQoS](/docs/concepts/workloads/pods/pod-qos/#memory-qos-with-cgroup-v2) améliore la QoS de la mémoire
42+
et repose sur les primitives cgroup v2.
43+
44+
45+
## Utilisation de cgroup v2 {#using-cgroupv2}
46+
47+
La manière recommandée d'utiliser cgroup v2 est d'utiliser une distribution Linux qui
48+
active et utilise cgroup v2 par défaut.
49+
50+
Pour vérifier si votre distribution utilise cgroup v2, consultez [Identifier la version de cgroup sur les nœuds Linux](#check-cgroup-version).
51+
52+
### Exigences
53+
54+
cgroup v2 a les exigences suivantes :
55+
56+
* La distribution OS active cgroup v2
57+
* La version du noyau Linux est 5.8 ou ultérieure
58+
* Le runtime de conteneur prend en charge cgroup v2. Par exemple :
59+
* [containerd](https://containerd.io/) v1.4 et ultérieur
60+
* [cri-o](https://cri-o.io/) v1.20 et ultérieur
61+
* Le kubelet et le runtime de conteneur sont configurés pour utiliser le [driver cgroup systemd](/docs/setup/production-environment/container-runtimes#systemd-cgroup-driver)
62+
63+
### Prise en charge de cgroup v2 par les distributions Linux
64+
65+
Pour une liste des distributions Linux qui utilisent cgroup v2, consultez la [documentation cgroup v2](https://github.com/opencontainers/runc/blob/main/docs/cgroup-v2.md)
66+
67+
<!-- la liste doit être synchronisée avec https://github.com/opencontainers/runc/blob/main/docs/cgroup-v2.md -->
68+
* Container Optimized OS (depuis M97)
69+
* Ubuntu (depuis 21.10, 22.04+ recommandé)
70+
* Debian GNU/Linux (depuis Debian 11 bullseye)
71+
* Fedora (depuis 31)
72+
* Arch Linux (depuis avril 2021)
73+
* RHEL et les distributions similaires à RHEL (depuis 9)
74+
75+
Pour vérifier si votre distribution utilise cgroup v2, consultez la
76+
documentation de votre distribution ou suivez les instructions de [Identifier la version de cgroup sur les nœuds Linux](#check-cgroup-version).
77+
78+
Vous pouvez également activer manuellement cgroup v2 sur votre distribution Linux en modifiant
79+
les arguments de démarrage de la ligne de commande du noyau. Si votre distribution utilise GRUB,
80+
`systemd.unified_cgroup_hierarchy=1` doit être ajouté dans `GRUB_CMDLINE_LINUX`
81+
sous `/etc/default/grub`, suivi de `sudo update-grub`.
82+
Cependant, l'approche recommandée est d'utiliser une distribution qui active déjà cgroup v2 par
83+
défaut.
84+
85+
### Migration vers cgroup v2 {#migrating-cgroupv2}
86+
87+
Pour migrer vers cgroup v2, assurez-vous de respecter les [exigences](#requirements), puis mettez à jour
88+
vers une version du noyau qui active cgroup v2 par défaut.
89+
90+
Le kubelet détecte automatiquement si le système d'exploitation utilise cgroup v2 et
91+
agit en conséquence, sans nécessiter de configuration supplémentaire.
92+
93+
Il ne devrait pas y avoir de différence perceptible dans l'expérience utilisateur lors du
94+
passage à cgroup v2, sauf si les utilisateurs accèdent directement au système de fichiers cgroup
95+
soit sur le nœud, soit depuis les conteneurs.
96+
97+
cgroup v2 utilise une API différente de cgroup v1, donc si des
98+
applications accèdent directement au système de fichiers cgroup, elles doivent être
99+
mises à jour vers des versions plus récentes qui prennent en charge cgroup v2. Par exemple :
100+
101+
* Certains agents de surveillance et de sécurité tiers peuvent dépendre du système de fichiers cgroup.
102+
Mettez à jour ces agents vers des versions qui prennent en charge cgroup v2.
103+
* Si vous exécutez [cAdvisor](https://github.com/google/cadvisor) en tant que DaemonSet autonome
104+
pour surveiller les pods et les conteneurs, mettez-le à jour vers la version 0.43.0 ou ultérieure.
105+
* Si vous déployez des applications Java, préférez utiliser des versions qui prennent en charge pleinement cgroup v2 :
106+
* [OpenJDK / HotSpot](https://bugs.openjdk.org/browse/JDK-8230305) : jdk8u372, 11.0.16, 15 et ultérieures
107+
* [IBM Semeru Runtimes](https://www.ibm.com/support/pages/apar/IJ46681) : 8.0.382.0, 11.0.20.0, 17.0.8.0 et ultérieures
108+
* [IBM Java](https://www.ibm.com/support/pages/apar/IJ46681) : 8.0.8.6 et ultérieures
109+
* Si vous utilisez le package [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs), assurez-vous
110+
d'utiliser la version v1.5.1 ou supérieure.
111+
112+
## Identifier la version de cgroup sur les nœuds Linux {#check-cgroup-version}
113+
114+
La version de cgroup dépend de la distribution Linux utilisée et de la
115+
version de cgroup par défaut configurée sur le système d'exploitation. Pour vérifier quelle version de cgroup votre
116+
distribution utilise, exécutez la commande `stat -fc %T /sys/fs/cgroup/` sur
117+
le nœud :
118+
119+
```shell
120+
stat -fc %T /sys/fs/cgroup/
121+
```
122+
123+
Pour cgroup v2, la sortie est `cgroup2fs`.
124+
125+
Pour cgroup v1, la sortie est `tmpfs.`
126+
127+
## {{% heading "whatsnext" %}}
128+
129+
- En savoir plus sur [cgroups](https://man7.org/linux/man-pages/man7/cgroups.7.html)
130+
- En savoir plus sur [le runtime de conteneur](/docs/concepts/architecture/cri)
131+
- En savoir plus sur [les drivers cgroup](/docs/setup/production-environment/container-runtimes#cgroup-drivers)

0 commit comments

Comments
 (0)