Skip to content

Commit fafe933

Browse files
authored
Merge pull request #19383 from Luciowl/master
Added endpoint-slices for language/fr
2 parents f85277d + dae5f05 commit fafe933

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
reviewers:
3+
title: EndpointSlices
4+
feature:
5+
title: EndpointSlices
6+
description: >
7+
Suivi évolutif des réseaux Endpoints dans un cluster Kubernetes.
8+
9+
content_template: templates/concept
10+
weight: 10
11+
---
12+
13+
14+
{{% capture overview %}}
15+
16+
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
17+
18+
_EndpointSlices_ offrent une méthode simple pour suivre les Endpoints d'un réseau au sein d'un cluster de Kubernetes. Ils offrent une alternative plus évolutive et extensible aux Endpoints.
19+
20+
{{% /capture %}}
21+
22+
{{% capture body %}}
23+
24+
## Resource pour EndpointSlice {#endpointslice-resource}
25+
26+
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de Endpoints.
27+
Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Service quand un {{< glossary_tooltip text="sélecteur" term_id="selector" >}} est spécifié.
28+
Ces EnpointSlices vont inclure des références à n'importe quels Pods qui correspond aux selecteur de Service.
29+
EndpointSlices groupent ensemble les Endpoints d'un réseau par combinaisons uniques de Services et de Ports.
30+
31+
Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
32+
33+
```yaml
34+
apiVersion: discovery.k8s.io/v1beta1
35+
kind: EndpointSlice
36+
metadata:
37+
name: exemple-abc
38+
labels:
39+
kubernetes.io/service-name: exemple
40+
addressType: IPv4
41+
ports:
42+
- name: http
43+
protocol: TCP
44+
port: 80
45+
endpoints:
46+
- addresses:
47+
- "10.1.2.3"
48+
conditions:
49+
ready: true
50+
hostname: pod-1
51+
topology:
52+
kubernetes.io/hostname: node-1
53+
topology.kubernetes.io/zone: us-west2-a
54+
```
55+
56+
Les EndpointSlices géré par le contrôleur d'EndpointSlice n'auront, par défaut, pas plus de 100 Endpoints chacun.
57+
En dessous de cette échelle, EndpointSlices devrait mapper 1:1 les Endpoints et les Service et devrait avoir une performance similaire.
58+
59+
EndpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand il s'agit du routage d'un trafic interne.
60+
Lorsqu'ils sont activés, ils devraient offrir une amélioration de performance pour les services qui ont une grand quantité d'Endpoints.
61+
62+
### Types d'addresses
63+
64+
Les EndpointSlices supportent 3 types d'addresses:
65+
66+
* IPv4
67+
* IPv6
68+
* FQDN (Fully Qualified Domain Name) - [serveur entièrement nommé]
69+
70+
### Topologie
71+
72+
Chaque Endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
73+
Ceci est utilisé pour indiqué où se trouve un Endpoint, qui contient les informations sur le Node, zone et region correspondante. Lorsque les valeurs sont disponibles, les labels de Topologies suivantes seront définies par le contrôleur EndpointSlice:
74+
75+
* `kubernetes.io/hostname` - Nom du Node sur lequel l'Endpoint se situe.
76+
* `topology.kubernetes.io/zone` - Zone dans laquelle l'Endpoint se situe.
77+
* `topology.kubernetes.io/region` - Region dans laquelle l'Endpoint se situe.
78+
79+
Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que leurs correspondances avec les EndpointSlices sont à jour.
80+
Le contrôleur gère les EndpointSlices pour tous les Services qui ont un sélecteur - [référence: {{< glossary_tooltip text="sélecteur" term_id="selector" >}}] - specifié. Celles-ci représenteront les IPs des Pods qui correspond au sélecteur.
81+
82+
### Capacité d'EndpointSlices
83+
84+
Les EndpointSlices sont limités a une capacité de 100 Endpoints chacun, par défaut. Vous pouvez configurer ceci avec l'indicateur `--max-endpoints-per-slice` {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} jusqu'à un maximum de 1000.
85+
86+
### Distribution d'EndpointSlices
87+
88+
Chaque EndpointSlice a un ensemble de ports qui s'applique à tous les Endpoints dans la resource.
89+
Lorsque les ports nommés sont utilisés pour un Service, les Pods peuvent se retrouver avec différents port cible pour le même port nommé, nécessitant différents EndpointSlices.
90+
91+
Le contrôleur essaie de remplir l'EndpointSlice aussi complètement que possible, mais ne les rééquilibre pas activement. La logique du contrôleur est assez simple:
92+
93+
1. Itérer à travers les EnpointSlices existants, retirer les Endpoints qui ne sont plus voulus et mettre à jour les Endpoints qui ont changés.
94+
2. Itérer à travers les EndpointSlices qui ont été modifiés dans la première étape et les remplir avec n'importe quel Endpoint nécéssaire.
95+
3. S'il reste encore des Endpoints neufs à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouveaux.
96+
97+
Par-dessus tout, la troisième étape priorise la limitation de mises à jour d'EnpointSlice sur une distribution complètement pleine d'EndpointSlices. Par exemple, si il y avait 10 nouveaux Endpoints à ajouter et 2 EndpointSlices qui peuvent contenir 5 Endpoints en plus chacun; cette approche créera un nouveau EndpointSlice au lieu de remplir les EndpointSlice existants.
98+
C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
99+
100+
Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement d'un EndpointSlice devient relativement coûteux puisqu'ils seront transmis à chaque Node du cluster.
101+
Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut causer plusieurs EndpointSlices non remplis.
102+
103+
En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petite pour tenir dans un EndpointSlice existant, et sinon, un nouveau EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également une compaction naturelle des EndpointSlices avec tous leurs pods et les Endpoints correspondants qui se feront remplacer.
104+
105+
## Motivation
106+
107+
L'API des Endpoints fournit une méthode simple et facile à suivre pour les Endpoints dans Kubernetes.
108+
Malheureusement, comme les clusters Kubernetes et Services sont devenus plus larges, les limitations de cette API sont devenues plus visibles.
109+
Plus particulièrement, ceux-ci comprenaient des limitations liés au dimensionnement vers un plus grand nombre d'Endpoint d'un réseau.
110+
111+
Puisque tous les Endpoints d'un réseau pour un Service ont été stockés dans une seule ressource Endpoints, ces ressources pourraient devenir assez lourdes.
112+
Cela a affecté les performances des composants Kubernetes (notamment le plan de contrôle) et a causé une grande quantité de trafic réseau et de traitements lorsque les Endpoints changent.
113+
Les EndpointSlices aident à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
114+
115+
{{% /capture %}}
116+
117+
{{% capture whatsnext %}}
118+
119+
* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
120+
* Lire [Connecter des applications aux Services](/docs/concepts/services-networking/connect-applications-service/)
121+
122+
{{% /capture %}}

0 commit comments

Comments
 (0)