From 2dfbdc2cd85094ceb8524089980d3a6f0e7e1c54 Mon Sep 17 00:00:00 2001
From: Maksym Vlasov
Date: Mon, 13 Jan 2020 18:51:38 +0200
Subject: [PATCH 01/52] Initial commit for Ukrainian localization (#18569)
* Initial commit for Ukrainian localization
* Fix misspell and crosslink
* Add Nikita Potapenko to PR reviewers
https://github.com/kubernetes/website/pull/18569#issuecomment-573014402
Co-authored-by: Anastasiya Kulyk <56824659+anastyakulyk@users.noreply.github.com>
---
OWNERS_ALIASES | 8 ++++++
README-uk.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++
README.md | 2 +-
config.toml | 11 ++++++++
content/uk/OWNERS | 13 +++++++++
5 files changed, 104 insertions(+), 1 deletion(-)
create mode 100644 README-uk.md
create mode 100644 content/uk/OWNERS
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index b6d0cfcd45..0e6ba8684a 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -216,3 +216,11 @@ aliases:
- aisonaku
- potapy4
- dianaabv
+ sig-docs-uk-owners: # Admins for Ukrainian content
+ - anastyakulyk
+ - MaxymVlasov
+ sig-docs-uk-reviews: # PR reviews for Ukrainian content
+ - anastyakulyk
+ - idvoretskyi
+ - MaxymVlasov
+ - Potapy4
diff --git a/README-uk.md b/README-uk.md
new file mode 100644
index 0000000000..68d3b0db0a
--- /dev/null
+++ b/README-uk.md
@@ -0,0 +1,71 @@
+# Документація Kubernetes
+
+[](https://travis-ci.org/kubernetes/website)
+[](https://github.com/kubernetes/website/releases/latest)
+
+Вітаємо! В цьому репозиторії міститься все необхідне для роботи над [вебсайтом і документацією Kubernetes](https://kubernetes.io/). Ми щасливі, що ви хочете зробити свій внесок!
+
+## Внесок у документацію
+
+Ви можете створити копію цього репозиторія у своєму акаунті на GitHub, натиснувши на кнопку **Fork**, що розташована справа зверху. Ця копія називатиметься *fork* (відгалуження). Зробіть будь-які необхідні зміни у своєму відгалуженні. Коли ви будете готові надіслати їх нам, перейдіть до свого відгалуження і створіть новий pull request, щоб сповістити нас.
+
+Після того, як ви створили pull request, рецензент Kubernetes зобов’язується надати вам по ньому чіткий і конструктивний коментар. **Ваш обов’язок як творця pull request - відкоригувати його відповідно до зауважень рецензента Kubernetes.** Також, зауважте: може статися так, що ви отримаєте коментарі від декількох рецензентів Kubernetes або від іншого рецензента, ніж той, якого вам було призначено від початку. Крім того, за потреби один із ваших рецензентів може запросити технічну перевірку від одного з [технічних рецензентів Kubernetes](https://github.com/kubernetes/website/wiki/Tech-reviewers). Рецензенти намагатимуться відреагувати вчасно, проте час відповіді може відрізнятися в залежності від обставин.
+
+Більше інформації про внесок у документацію Kubernetes ви знайдете у наступних джерелах:
+
+* [Внесок: з чого почати](https://kubernetes.io/docs/contribute/start/)
+* [Візуалізація запропонованих змін до документації](http://kubernetes.io/docs/contribute/intermediate#view-your-changes-locally)
+* [Використання шаблонів сторінок](http://kubernetes.io/docs/contribute/style/page-templates/)
+* [Керівництво зі стилю оформлення документації](http://kubernetes.io/docs/contribute/style/style-guide/)
+* [Переклад документації Kubernetes іншими мовами](https://kubernetes.io/docs/contribute/localization/)
+
+## Запуск сайту локально за допомогою Docker
+
+Для локального запуску вебсайту Kubernetes рекомендовано запустити спеціальний [Docker](https://docker.com)-образ, що містить генератор статичних сайтів [Hugo](https://gohugo.io).
+
+> Якщо ви працюєте під Windows, вам знадобиться ще декілька інструментів, які можна встановити за допомогою [Chocolatey](https://chocolatey.org). `choco install make`
+
+> Якщо ви вважаєте кращим запустити вебсайт локально без використання Docker, дивіться пункт нижче [Запуск сайту локально за допомогою Hugo](#запуск-сайту-локально-зa-допомогою-hugo).
+
+Якщо у вас вже [запущений](https://www.docker.com/get-started) Docker, зберіть локальний Docker-образ `kubernetes-hugo`:
+
+```bash
+make docker-image
+```
+
+Після того, як образ зібрано, ви можете запустити вебсайт локально:
+
+```bash
+make docker-serve
+```
+
+Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте початковий код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
+
+## Запуск сайту локально зa допомогою Hugo
+
+Для інструкцій по установці Hugo дивіться [офіційну документацію](https://gohugo.io/getting-started/installing/). Обов’язково встановіть розширену версію Hugo, яка позначена змінною оточення `HUGO_VERSION` у файлі [`netlify.toml`](netlify.toml#L9).
+
+Після установки Hugo запустіть вебсайт локально командою:
+
+```bash
+make serve
+```
+
+Команда запустить локальний Hugo-сервер на порту 1313. Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте початковий код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
+
+## Спільнота, обговорення, внесок і підтримка
+
+Дізнайтеся, як долучитися до спільноти Kubernetes на [сторінці спільноти](http://kubernetes.io/community/).
+
+Для зв’язку із супроводжуючими проекту скористайтеся:
+
+- [Slack](https://kubernetes.slack.com/messages/sig-docs)
+- [Поштова розсилка](https://groups.google.com/forum/#!forum/kubernetes-sig-docs)
+
+### Кодекс поведінки
+
+Участь у спільноті Kubernetes визначається правилами [Кодексу поведінки спільноти Kubernetes](code-of-conduct.md).
+
+## Дякуємо!
+
+Долучення до спільноти - запорука успішного розвитку Kubernetes. Ми цінуємо ваш внесок у наш вебсайт і документацію!
diff --git a/README.md b/README.md
index f403f9e9de..02919f3136 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ For more information about contributing to the Kubernetes documentation, see:
|[Hindi README](README-hi.md)|[Spanish README](README-es.md)|
|[Indonesian README](README-id.md)|[Chinese README](README-zh.md)|
|[Japanese README](README-ja.md)|[Vietnamese README](README-vi.md)|
-|[Russian README](README-ru.md)|
+|[Russian README](README-ru.md)|[Ukrainian README](README-uk.md)
|||
## Running the website locally using Docker
diff --git a/config.toml b/config.toml
index 990392d659..399cb38e68 100644
--- a/config.toml
+++ b/config.toml
@@ -286,3 +286,14 @@ time_format_blog = "02.01.2006"
# A list of language codes to look for untranslated content, ordered from left to right.
language_alternatives = ["en"]
+[languages.uk]
+title = "Kubernetes"
+description = "Довершена система оркестрації контейнерів"
+languageName = "Українська"
+weight = 13
+contentDir = "content/uk"
+
+[languages.uk.params]
+time_format_blog = "02.01.2006"
+# A list of language codes to look for untranslated content, ordered from left to right.
+language_alternatives = ["en"]
diff --git a/content/uk/OWNERS b/content/uk/OWNERS
new file mode 100644
index 0000000000..09fbf1170c
--- /dev/null
+++ b/content/uk/OWNERS
@@ -0,0 +1,13 @@
+# See the OWNERS docs at https://go.k8s.io/owners
+
+# This is the directory for Ukrainian source content.
+# Teams and members are visible at https://github.com/orgs/kubernetes/teams.
+
+reviewers:
+- sig-docs-uk-reviews
+
+approvers:
+- sig-docs-uk-owners
+
+labels:
+- language/uk
From dfd00c180e6222c49b5d75963647fbb6aed2018e Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Sun, 8 Dec 2019 20:08:01 +0000
Subject: [PATCH 02/52] Fix whitespace
The Kubernetes object is called ReplicationController.
---
content/ko/docs/reference/glossary/replication-controller.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/ko/docs/reference/glossary/replication-controller.md b/content/ko/docs/reference/glossary/replication-controller.md
index f5c19a33aa..2bcf7aefab 100755
--- a/content/ko/docs/reference/glossary/replication-controller.md
+++ b/content/ko/docs/reference/glossary/replication-controller.md
@@ -1,5 +1,5 @@
---
-title: 레플리케이션 컨트롤러(Replication Controller)
+title: 레플리케이션 컨트롤러(ReplicationController)
id: replication-controller
date: 2018-04-12
full_link:
From 7bd5562d2b1aaf1adea48585c154741ababe4072 Mon Sep 17 00:00:00 2001
From: MaxymVlasov
Date: Wed, 5 Feb 2020 14:53:39 +0200
Subject: [PATCH 03/52] Fix merge conflict resolution mistake
---
config.toml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/config.toml b/config.toml
index be61230816..5c0328ec9e 100644
--- a/config.toml
+++ b/config.toml
@@ -295,6 +295,9 @@ contentDir = "content/pl"
[languages.pl.params]
time_format_blog = "01.02.2006"
+# A list of language codes to look for untranslated content, ordered from left to right.
+language_alternatives = ["en"]
+
[languages.uk]
title = "Kubernetes"
description = "Довершена система оркестрації контейнерів"
From 2e8eb9bd4f906fdd9435476b359395a4ccb5d8d0 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Fri, 28 Feb 2020 09:26:54 -0500
Subject: [PATCH 04/52] Added endpoint-slices for language/fr
---
.../services-networking/endpoint-slices.md | 111 ++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 content/fr/docs/concepts/services-networking/endpoint-slices.md
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
new file mode 100644
index 0000000000..47f076d11b
--- /dev/null
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -0,0 +1,111 @@
+---
+reviewers:
+title: EndpointSlices
+feature:
+ title: EndpointSlices
+ description: >
+ Scalable tracking of network endpoints in a Kubernetes cluster.
+
+content_template: templates/concept
+weight: 10
+---
+
+
+{{% capture overview %}}
+
+{{< feature-state for_k8s_version="v1.17" state="beta" >}}
+
+_EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un réseau au sein d'un cluster de Kubernetes. Ils offrent une alternative plus evolutive et extensible aux Endpoints.
+
+{{% /capture %}}
+
+{{% capture body %}}
+
+## Resource pour EndpointSlice {#endpointslice-resource}
+
+Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
+endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selector" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux Service selector. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+
+Par example, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `example`.
+
+```yaml
+apiVersion: discovery.k8s.io/v1beta1
+kind: EndpointSlice
+metadata:
+ name: example-abc
+ labels:
+ kubernetes.io/service-name: example
+addressType: IPv4
+ports:
+ - name: http
+ protocol: TCP
+ port: 80
+endpoints:
+ - addresses:
+ - "10.1.2.3"
+ conditions:
+ ready: true
+ hostname: pod-1
+ topology:
+ kubernetes.io/hostname: node-1
+ topology.kubernetes.io/zone: us-west2-a
+```
+
+EndpointSlices geré par le controleur d'EndpointSlice n'auront, par défaut, pas plus de 100 endpoints chacun. En dessous de cette échelle, EndpointSlices devrait mapper 1:1 les Endpoints et les Service et devrait avoir une performance similaire.
+
+EnpointpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand it s'agit du routage d'un trafic interne. Lorsqu'ils sont activés, ils devront une amélioration de performance pour les services qui ont une grand quantité d'endpoints.
+
+### Types d'addresses
+
+EndpointSlices supporte trois type d'addresses:
+
+* IPv4
+* IPv6
+* FQDN (Fully Qualified Domain Name) - [serveur entièrement nommé]
+
+### Topologie
+
+Chaque endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
+Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Noeud, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
+
+* `kubernetes.io/hostname` - Nom du Noeud sur lequel l'endpoint se situe.
+* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
+* `topology.kubernetes.io/region` - Region dans laquelle l'endpoint se situe.
+
+Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selector" term_id="selector" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
+
+### Capacité d'EndpointSlices
+
+Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. Vous pouvez configurer ceci avec le `--max-endpoints-per-slice` {{< glossary_tooltip
+text="kube-controller-manager" term_id="kube-controller-manager" >}} flag [indicateur] jusqu'à un maximum de 1000.
+
+### Distribution d'EndpointSlices
+
+Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les endpoints dans la resource. Lorsque les ports nommés sont utilisé pour un Service, les Pods peuvent se retrouver avec differents port cible pour le même port nommé, nécessitant différents EndpointSlices.
+
+Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possible, mais ne les rééquilibrent pas activement. La logic du contrôlleur est assez simple:
+
+1. Itérer à travers les EnpointSlices existantes, retirer les endpoint qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
+2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
+3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
+
+par-dessus tout, la troisème étape priorise la limitation de mises à jour d'EnpointSlice sur une distribution complètement pleine d'EndpointSlices. Par example, si il y avait 10 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
+
+Avec kube-proxy exécuté sur chaque Noeud et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Noeud du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Noeud, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
+
+En pratique, cette distribution moins qu'idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
+
+## Motivation
+
+Les Endpoints API ont fournit une methode simple et facile de suivre les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus large, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés à la mise à l'échelle vers un plus grand nombre d'endpoint d'un réseau.
+
+Puisque tout les endpoint d'un réseau pour un Service ont été stockés dans un seul ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu une grande quantité de trafic réseau et de traitement lorsque les Enpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+
+{{% /capture %}}
+
+{{% capture whatsnext %}}
+
+* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
+* Read [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
+
+{{% /capture %}}
\ No newline at end of file
From 86cf63495c48a67c9f9915d7c3e15602bfcc5707 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 2 Mar 2020 09:31:05 -0500
Subject: [PATCH 05/52] First round review changes
---
.../services-networking/endpoint-slices.md | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index 47f076d11b..460bc41f25 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -4,7 +4,7 @@ title: EndpointSlices
feature:
title: EndpointSlices
description: >
- Scalable tracking of network endpoints in a Kubernetes cluster.
+ Suivi évolutif des points de terminaison réseau dans un cluster Kubernetes.
content_template: templates/concept
weight: 10
@@ -24,17 +24,17 @@ _EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un rése
## Resource pour EndpointSlice {#endpointslice-resource}
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selector" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux Service selector. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selecteur" term_id="selecteur" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
-Par example, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `example`.
+Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
```yaml
apiVersion: discovery.k8s.io/v1beta1
kind: EndpointSlice
metadata:
- name: example-abc
+ name: exemple-abc
labels:
- kubernetes.io/service-name: example
+ kubernetes.io/service-name: exemple
addressType: IPv4
ports:
- name: http
@@ -66,18 +66,18 @@ EndpointSlices supporte trois type d'addresses:
### Topologie
Chaque endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
-Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Noeud, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
+Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Node, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
-* `kubernetes.io/hostname` - Nom du Noeud sur lequel l'endpoint se situe.
+* `kubernetes.io/hostname` - Nom du Node sur lequel l'endpoint se situe.
* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
* `topology.kubernetes.io/region` - Region dans laquelle l'endpoint se situe.
-Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selector" term_id="selector" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
+Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selecteur" term_id="selecteur" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
### Capacité d'EndpointSlices
-Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. Vous pouvez configurer ceci avec le `--max-endpoints-per-slice` {{< glossary_tooltip
-text="kube-controller-manager" term_id="kube-controller-manager" >}} flag [indicateur] jusqu'à un maximum de 1000.
+Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. 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.
### Distribution d'EndpointSlices
@@ -89,9 +89,9 @@ Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possib
2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
-par-dessus tout, la troisème étape priorise la limitation de mises à jour d'EnpointSlice sur une distribution complètement pleine d'EndpointSlices. Par example, si il y avait 10 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
+Par-dessus tout, la troisè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 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
-Avec kube-proxy exécuté sur chaque Noeud et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Noeud du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Noeud, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
+Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
En pratique, cette distribution moins qu'idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
@@ -99,13 +99,13 @@ En pratique, cette distribution moins qu'idéale devrait être rare. La plupart
Les Endpoints API ont fournit une methode simple et facile de suivre les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus large, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés à la mise à l'échelle vers un plus grand nombre d'endpoint d'un réseau.
-Puisque tout les endpoint d'un réseau pour un Service ont été stockés dans un seul ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu une grande quantité de trafic réseau et de traitement lorsque les Enpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+Puisque tout les endpoints d'un réseau pour un Service ont été stockés dans une seule ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
{{% /capture %}}
{{% capture whatsnext %}}
* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
-* Read [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
+* Lire [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
{{% /capture %}}
\ No newline at end of file
From 2e750fa39e706c26c994c15db6b0e9a3685830d3 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 2 Mar 2020 09:31:05 -0500
Subject: [PATCH 06/52] First round review changes
---
.../services-networking/endpoint-slices.md | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index 47f076d11b..6798eb2c20 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -4,7 +4,7 @@ title: EndpointSlices
feature:
title: EndpointSlices
description: >
- Scalable tracking of network endpoints in a Kubernetes cluster.
+ Suivi évolutif des points de terminaison réseau dans un cluster Kubernetes.
content_template: templates/concept
weight: 10
@@ -24,17 +24,17 @@ _EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un rése
## Resource pour EndpointSlice {#endpointslice-resource}
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selector" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux Service selector. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selector" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
-Par example, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `example`.
+Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
```yaml
apiVersion: discovery.k8s.io/v1beta1
kind: EndpointSlice
metadata:
- name: example-abc
+ name: exemple-abc
labels:
- kubernetes.io/service-name: example
+ kubernetes.io/service-name: exemple
addressType: IPv4
ports:
- name: http
@@ -66,9 +66,9 @@ EndpointSlices supporte trois type d'addresses:
### Topologie
Chaque endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
-Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Noeud, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
+Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Node, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
-* `kubernetes.io/hostname` - Nom du Noeud sur lequel l'endpoint se situe.
+* `kubernetes.io/hostname` - Nom du Node sur lequel l'endpoint se situe.
* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
* `topology.kubernetes.io/region` - Region dans laquelle l'endpoint se situe.
@@ -76,8 +76,8 @@ Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que
### Capacité d'EndpointSlices
-Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. Vous pouvez configurer ceci avec le `--max-endpoints-per-slice` {{< glossary_tooltip
-text="kube-controller-manager" term_id="kube-controller-manager" >}} flag [indicateur] jusqu'à un maximum de 1000.
+Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. 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.
### Distribution d'EndpointSlices
@@ -89,9 +89,9 @@ Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possib
2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
-par-dessus tout, la troisème étape priorise la limitation de mises à jour d'EnpointSlice sur une distribution complètement pleine d'EndpointSlices. Par example, si il y avait 10 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
+Par-dessus tout, la troisè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 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
-Avec kube-proxy exécuté sur chaque Noeud et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Noeud du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Noeud, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
+Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
En pratique, cette distribution moins qu'idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
@@ -99,13 +99,13 @@ En pratique, cette distribution moins qu'idéale devrait être rare. La plupart
Les Endpoints API ont fournit une methode simple et facile de suivre les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus large, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés à la mise à l'échelle vers un plus grand nombre d'endpoint d'un réseau.
-Puisque tout les endpoint d'un réseau pour un Service ont été stockés dans un seul ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu une grande quantité de trafic réseau et de traitement lorsque les Enpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+Puisque tout les endpoints d'un réseau pour un Service ont été stockés dans une seule ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
{{% /capture %}}
{{% capture whatsnext %}}
* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
-* Read [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
+* Lire [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
{{% /capture %}}
\ No newline at end of file
From 48828fdc4a17ab872d7f3c9ae65c4c09e8934668 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 2 Mar 2020 11:39:54 -0500
Subject: [PATCH 07/52] keeping term_id but changing text
---
.../fr/docs/concepts/services-networking/endpoint-slices.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index 04a63aa6c8..6992428f57 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -24,7 +24,7 @@ _EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un rése
## Resource pour EndpointSlice {#endpointslice-resource}
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selector" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selecteur" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
@@ -72,7 +72,7 @@ Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les info
* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
* `topology.kubernetes.io/region` - Region dans laquelle l'endpoint se situe.
-Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selector" term_id="selector" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
+Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selecteur" term_id="selector" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
### Capacité d'EndpointSlices
From 6eceb245a2335d1e1a15ebaa4086dfbb5d4610f4 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 2 Mar 2020 12:20:17 -0500
Subject: [PATCH 08/52] remove typo
---
content/fr/docs/concepts/services-networking/endpoint-slices.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index 6992428f57..a96dad2b98 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -106,6 +106,6 @@ Puisque tout les endpoints d'un réseau pour un Service ont été stockés dans
{{% capture whatsnext %}}
* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
-* Lire [Connecté des Agit stpplication aux Services](/docs/concepts/services-networking/connect-applications-service/)
+* Lire [Connecté des Application aux Services](/docs/concepts/services-networking/connect-applications-service/)
{{% /capture %}}
\ No newline at end of file
From 73f5b576d4bb9309037fbb41785cb937efc253a8 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 2 Mar 2020 12:39:39 -0500
Subject: [PATCH 09/52] Fix accent and verb accordance
---
.../services-networking/endpoint-slices.md | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index a96dad2b98..b25516b1a2 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -24,7 +24,7 @@ _EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un rése
## Resource pour EndpointSlice {#endpointslice-resource}
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selecteur" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references a n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selecteur" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references à n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
@@ -53,7 +53,7 @@ endpoints:
EndpointSlices geré par le controleur d'EndpointSlice n'auront, par défaut, pas plus de 100 endpoints chacun. En dessous de cette échelle, EndpointSlices devrait mapper 1:1 les Endpoints et les Service et devrait avoir une performance similaire.
-EnpointpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand it s'agit du routage d'un trafic interne. Lorsqu'ils sont activés, ils devront une amélioration de performance pour les services qui ont une grand quantité d'endpoints.
+EndpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand it s'agit du routage d'un trafic interne. Lorsqu'ils sont activés, ils devraient offrir une amélioration de performance pour les services qui ont une grand quantité d'endpoints.
### Types d'addresses
@@ -66,7 +66,7 @@ EndpointSlices supporte trois type d'addresses:
### Topologie
Chaque endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
-Ceci est utilisé pour indiqué où se trouve un endpoint, qui contient les informations sur le Node, zone et region correspondant. Lorsque les valeurs sont disponibles, les etiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
+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 étiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
* `kubernetes.io/hostname` - Nom du Node sur lequel l'endpoint se situe.
* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
@@ -76,16 +76,15 @@ Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que
### Capacité d'EndpointSlices
-Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. 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.
+Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. 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.
### Distribution d'EndpointSlices
Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les endpoints dans la resource. Lorsque les ports nommés sont utilisé pour un Service, les Pods peuvent se retrouver avec differents port cible pour le même port nommé, nécessitant différents EndpointSlices.
-Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possible, mais ne les rééquilibrent pas activement. La logic du contrôlleur est assez simple:
+Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possible, mais ne les rééquilibre pas activement. La logic du contrôlleur est assez simple:
-1. Itérer à travers les EnpointSlices existantes, retirer les endpoint qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
+1. Itérer à travers les EnpointSlices éxistantes, retirer les endpoint qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
@@ -93,7 +92,7 @@ Par-dessus tout, la troisème étape priorise la limitation de mises à jour d'E
Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
-En pratique, cette distribution moins qu'idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
+En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
## Motivation
From 44e3358c7f3bec220966750b7b170e8bc379450b Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Fri, 6 Mar 2020 10:00:26 -0500
Subject: [PATCH 10/52] second round review
---
.../services-networking/endpoint-slices.md | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index b25516b1a2..103a2bf377 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -4,7 +4,7 @@ title: EndpointSlices
feature:
title: EndpointSlices
description: >
- Suivi évolutif des réseau endpoints dans un cluster Kubernetes.
+ Suivi évolutif des réseaux endpoints dans un cluster Kubernetes.
content_template: templates/concept
weight: 10
@@ -15,7 +15,7 @@ weight: 10
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
-_EndpointSlices_ offrent une simple methode pour suivre les endpoints d'un réseau au sein d'un cluster de Kubernetes. Ils offrent une alternative plus evolutive et extensible aux Endpoints.
+_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 evolutive et extensible aux Endpoints.
{{% /capture %}}
@@ -76,29 +76,29 @@ Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que
### Capacité d'EndpointSlices
-Les EndpointSlices sont limité a une capacité de 100 endpoints chacun, par defaut. 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.
+Les EndpointSlices sont limités a une capacité de 100 endpoints chacun, par defaut. Vous pouvez configurer cela avec l'indicateur `--max-endpoints-per-slice` {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} jusqu'à un maximum de 1000.
### Distribution d'EndpointSlices
-Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les endpoints dans la resource. Lorsque les ports nommés sont utilisé pour un Service, les Pods peuvent se retrouver avec differents port cible pour le même port nommé, nécessitant différents EndpointSlices.
+Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les endpoints dans la resource. 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.
-Le contrôlleur essait de remplir l'EndpointSlice aussi complètement que possible, mais ne les rééquilibre pas activement. La logic du contrôlleur est assez simple:
+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:
-1. Itérer à travers les EnpointSlices éxistantes, retirer les endpoint qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
+1. Itérer à travers les EnpointSlices existantes, retirer les endpoints qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
Par-dessus tout, la troisè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 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
-Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement à une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
+Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement a une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
-En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traité par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
+En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
## Motivation
-Les Endpoints API ont fournit une methode simple et facile de suivre les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus large, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés à la mise à l'échelle vers un plus grand nombre d'endpoint d'un réseau.
+Les Endpoints API fournissent une méthode simple et facile à suivre pour les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus larges, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés au dimensionnement vers un plus grand nombre d'endpoint d'un réseau.
-Puisque tout les endpoints d'un réseau pour un Service ont été stockés dans une seule ressource Endpoints, ces ressources pourraient devenir assez considérable. Ça a affecté les performances des composants Kubernetes (notamment le plan de contrôle maître) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. EndpointSlices vous aide à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+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. Cela affecte les performances des composants Kubernetes (notamment le plan de contrôle) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. Les EndpointSlices vous aident à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
{{% /capture %}}
From ef2f47772844dc5cc8fb6c4d410d2d19dc3d5910 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Fri, 6 Mar 2020 10:05:13 -0500
Subject: [PATCH 11/52] Rewording sentences for a more accurate translation
---
content/fr/docs/concepts/services-networking/endpoint-slices.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index 103a2bf377..cf980fd340 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -92,7 +92,7 @@ Par-dessus tout, la troisème étape priorise la limitation de mises à jour d'E
Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement a une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
-En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour continues des déploiements fournissent également un remballage naturel des EndpointSlices avec tout leur pods et les endpoints correspondants qui se feront remplacer.
+En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour régulières des déploiements permettent également un reconditionnement naturel des EndpointSlices avec tout les pods et les endpoints correspondants qui se feront remplacer.
## Motivation
From 476598657b092e4ae2cd145d990115c0974ddf0f Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 9 Mar 2020 15:39:33 -0400
Subject: [PATCH 12/52] Add reviewed changes
---
.../services-networking/endpoint-slices.md | 52 +++++++++++--------
1 file changed, 30 insertions(+), 22 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index cf980fd340..bf22340339 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -4,7 +4,7 @@ title: EndpointSlices
feature:
title: EndpointSlices
description: >
- Suivi évolutif des réseaux endpoints dans un cluster Kubernetes.
+ Suivi évolutif des réseaux Endpoints dans un cluster Kubernetes.
content_template: templates/concept
weight: 10
@@ -15,7 +15,7 @@ weight: 10
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
-_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 evolutive et extensible aux Endpoints.
+_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.
{{% /capture %}}
@@ -24,7 +24,9 @@ _EndpointSlices_ offrent une méthode simple pour suivre les endpoints d'un rés
## Resource pour EndpointSlice {#endpointslice-resource}
Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-endpoints. Le controleur d'EndpointSlice crée automatiquement des EndpointSlices pour un Kubernetes Service quand un {{< glossary_tooltip text="selecteur" term_id="selector" >}} est spécifié. Ces EnpointSlices vont inclure des references à n'importe quelle Pods qui correspond aux selecteur de Service. EndpointSlices groupent ensemble les endpoints d'un reseau par combinaisons uniques de Services et de Ports.
+Endpoints. 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é.
+Ces EnpointSlices vont inclure des références à n'importe quels Pods qui correspond aux selecteur de Service.
+EndpointSlices groupent ensemble les Endpoints d'un réseau par combinaisons uniques de Services et de Ports.
Par exemple, voici un échantillon d'une resource EndpointSlice pour le Kubernetes Service `exemple`.
@@ -51,13 +53,15 @@ endpoints:
topology.kubernetes.io/zone: us-west2-a
```
-EndpointSlices geré par le controleur d'EndpointSlice n'auront, par défaut, pas plus de 100 endpoints chacun. En dessous de cette échelle, EndpointSlices devrait mapper 1:1 les Endpoints et les Service et devrait avoir une performance similaire.
+Les EndpointSlices géré par le contrôleur d'EndpointSlice n'auront, par défaut, pas plus de 100 Endpoints chacun.
+En dessous de cette échelle, EndpointSlices devrait mapper 1:1 les Endpoints et les Service et devrait avoir une performance similaire.
-EndpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand it s'agit du routage d'un trafic interne. Lorsqu'ils sont activés, ils devraient offrir une amélioration de performance pour les services qui ont une grand quantité d'endpoints.
+EndpointSlices peuvent agir en tant que source de vérité pour kube-proxy quand il s'agit du routage d'un trafic interne.
+Lorsqu'ils sont activés, ils devraient offrir une amélioration de performance pour les services qui ont une grand quantité d'Endpoints.
### Types d'addresses
-EndpointSlices supporte trois type d'addresses:
+Les EndpointSlices supportent 3 types d'addresses:
* IPv4
* IPv6
@@ -65,46 +69,50 @@ EndpointSlices supporte trois type d'addresses:
### Topologie
-Chaque endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
-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 étiquette de Topologies suivantes seront définies par le contrôleur EndpointSlice:
+Chaque Endpoint dans un EnpointSlice peut contenir des informations de topologie pertinentes.
+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:
-* `kubernetes.io/hostname` - Nom du Node sur lequel l'endpoint se situe.
-* `topology.kubernetes.io/zone` - Zone dans laquelle l'endpoint se situe.
-* `topology.kubernetes.io/region` - Region dans laquelle l'endpoint se situe.
+* `kubernetes.io/hostname` - Nom du Node sur lequel l'Endpoint se situe.
+* `topology.kubernetes.io/zone` - Zone dans laquelle l'Endpoint se situe.
+* `topology.kubernetes.io/region` - Region dans laquelle l'Endpoint se situe.
-Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que les correspondantes EndpointSlices sont mis-à-jour. Le contrôleur gèrera les EndpointSlices pour tout les Services qui ont un selecteur - [reference: {{< glossary_tooltip text="selecteur" term_id="selector" >}}] - specifié. Celles-ci representeront les IPs des Pods qui correspond au selecteur.
+Le contrôleur EndpointSlice surveille les Services et les Pods pour assurer que leurs correspondances avec les EndpointSlices sont à jour.
+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.
### Capacité d'EndpointSlices
-Les EndpointSlices sont limités a une capacité de 100 endpoints chacun, par defaut. Vous pouvez configurer cela avec l'indicateur `--max-endpoints-per-slice` {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} jusqu'à un maximum de 1000.
+Les EndpointSlices sont limités a une capacité de 100 Endpoints chacun, par defaut. Vous pouvez configurer cela avec l'indicateur `--max-endpoints-per-slice` {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} jusqu'à un maximum de 1000.
### Distribution d'EndpointSlices
-Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les endpoints dans la resource. 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.
+Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les Endpoints dans la resource. 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.
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:
-1. Itérer à travers les EnpointSlices existantes, retirer les endpoints qui ne sont plus voulues et mettre à jour les endpoints qui ont changées.
-2. Itérer à travers les EndpointSlices qui ont été modifiées dans la première étape et les remplir avec n'importe quelle endpoint nécéssaire.
-3. Si il reste encore des endpoints neuves à ajouter, essayez de les mettre dans une slice qui n'a pas été changé et/ou en crée de nouvelles.
+1. Itérer à travers les EnpointSlices existantes, retirer les Endpoints qui ne sont plus voulues et mettre à jour les Endpoints qui ont changées.
+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.
+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.
-Par-dessus tout, la troisè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 nouvelles endpoints à ajouter et 2 EndpointSlices qui peuvent accomoder 5 endpoint en plus chacun; cette approche créera une nouvelle EndpointSlice au lieu de remplir les EndpointSlice existantes. C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
+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.
+C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement a une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
-En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour régulières des déploiements permettent également un reconditionnement naturel des EndpointSlices avec tout les pods et les endpoints correspondants qui se feront remplacer.
+En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour régulières des déploiements permettent également un reconditionnement naturel des EndpointSlices avec tout les pods et les Endpoints correspondants qui se feront remplacer.
## Motivation
-Les Endpoints API fournissent une méthode simple et facile à suivre pour les endpoint d'un réseau dans Kubernetes. Malheureusement, comme les clusters Kubernetes et Services sont devenus plus larges, les limitations de cette API sont devenues plus visibles. Plus particulièrement, ceux-ci comprenaient des défis liés au dimensionnement vers un plus grand nombre d'endpoint d'un réseau.
+L'API des Endpoints fournit une méthode simple et facile à suivre pour les Endpoints d'un réseau dans Kubernetes.
+Malheureusement, comme les clusters Kubernetes et Services sont devenus plus larges, les limitations de cette API sont devenues plus visibles.
+Plus particulièrement, ceux-ci comprenaient des défis liés au dimensionnement vers un plus grand nombre d'Endpoint d'un réseau.
-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. Cela affecte les performances des composants Kubernetes (notamment le plan de contrôle) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. Les EndpointSlices vous aident à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+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. Cela affecte les performances des composants Kubernetes (notamment le plan de contrôle) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. Les EndpointSlices vous aident à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
{{% /capture %}}
{{% capture whatsnext %}}
* [Activer EndpointSlices](/docs/tasks/administer-cluster/enabling-endpointslices)
-* Lire [Connecté des Application aux Services](/docs/concepts/services-networking/connect-applications-service/)
+* Lire [Connecter des applications aux Services](/docs/concepts/services-networking/connect-applications-service/)
{{% /capture %}}
\ No newline at end of file
From f0b4ddf012217514a524e43b857910ab91f9f198 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 9 Mar 2020 15:44:36 -0400
Subject: [PATCH 13/52] Add last minute changes
---
.../fr/docs/concepts/services-networking/endpoint-slices.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index bf22340339..a4283fee91 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -81,11 +81,12 @@ Le contrôleur gère les EndpointSlices pour tous les Services qui ont un sélec
### Capacité d'EndpointSlices
-Les EndpointSlices sont limités a une capacité de 100 Endpoints chacun, par defaut. Vous pouvez configurer cela avec l'indicateur `--max-endpoints-per-slice` {{< glossary_tooltip text="kube-controller-manager" term_id="kube-controller-manager" >}} jusqu'à un maximum de 1000.
+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.
### Distribution d'EndpointSlices
-Chaque EndpointSlice a un ensemble de ports qui s'applique à toutes les Endpoints dans la resource. 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.
+Chaque EndpointSlice a un ensemble de ports qui s'applique à tous les Endpoints dans la resource.
+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.
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:
From c61213299d319d4916fe5d01ad7812ed31c2b445 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Mon, 9 Mar 2020 16:03:30 -0400
Subject: [PATCH 14/52] Add changes for missed reviews
---
.../services-networking/endpoint-slices.md | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index a4283fee91..c3fdef9a29 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -90,24 +90,27 @@ Lorsque les ports nommés sont utilisés pour un Service, les Pods peuvent se re
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:
-1. Itérer à travers les EnpointSlices existantes, retirer les Endpoints qui ne sont plus voulues et mettre à jour les Endpoints qui ont changées.
+1. Itérer à travers les EnpointSlices existants, retirer les Endpoints qui ne sont plus voulus et mettre à jour les Endpoints qui ont changés.
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.
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.
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.
C'est à dire, une seule création EndpointSlice est préférable à plusieurs mises à jour d'EndpointSlice.
-Avec kube-proxy exécuté sur chaque Node et surveillant EndpointSlices, chaque changement a une EndpointSlice devient relativement coûteux puisqu'ils seront transmit à chaque Node du cluster. Cette approche vise à limiter le nombre de modifications qui doivent être envoyées à chaque Node, même si ça peut entraîner plusieurs EndpointSlices qui ne sont pas plein.
+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.
+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.
-En pratique, cette distribution bien peu idéale devrait être rare. La plupart des changements traités par le contrôleur EndpointSlice sera suffisamment petit pour tenir dans un EndpointSlice existante, et sinon, une nouvelle EndpointSlice aura probablement été bientôt nécessaire de toute façon. Les mises à jour régulières des déploiements permettent également un reconditionnement naturel des EndpointSlices avec tout les pods et les Endpoints correspondants qui se feront remplacer.
+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.
## Motivation
-L'API des Endpoints fournit une méthode simple et facile à suivre pour les Endpoints d'un réseau dans Kubernetes.
+L'API des Endpoints fournit une méthode simple et facile à suivre pour les Endpoints dans Kubernetes.
Malheureusement, comme les clusters Kubernetes et Services sont devenus plus larges, les limitations de cette API sont devenues plus visibles.
-Plus particulièrement, ceux-ci comprenaient des défis liés au dimensionnement vers un plus grand nombre d'Endpoint d'un réseau.
+Plus particulièrement, ceux-ci comprenaient des limitations liés au dimensionnement vers un plus grand nombre d'Endpoint d'un réseau.
-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. Cela affecte les performances des composants Kubernetes (notamment le plan de contrôle) et a donné lieu à une grande quantité de trafic réseau et de traitement lorsque les Endpoints changent. Les EndpointSlices vous aident à atténuer ces problèmes ainsi qu'à fournir une plate-forme extensible pour des fonctionnalités supplémentaires telles que le routage topologique.
+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.
+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.
+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.
{{% /capture %}}
From dae5f0585b49dd46c5e8f66b25d1760a051fa035 Mon Sep 17 00:00:00 2001
From: Harrison Razanajatovo
Date: Tue, 10 Mar 2020 09:15:51 -0400
Subject: [PATCH 15/52] Simplify for clarity
---
.../fr/docs/concepts/services-networking/endpoint-slices.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/fr/docs/concepts/services-networking/endpoint-slices.md b/content/fr/docs/concepts/services-networking/endpoint-slices.md
index c3fdef9a29..b06117cc00 100644
--- a/content/fr/docs/concepts/services-networking/endpoint-slices.md
+++ b/content/fr/docs/concepts/services-networking/endpoint-slices.md
@@ -23,8 +23,8 @@ _EndpointSlices_ offrent une méthode simple pour suivre les Endpoints d'un rés
## Resource pour EndpointSlice {#endpointslice-resource}
-Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de reseau
-Endpoints. 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é.
+Dans Kubernetes, un EndpointSlice contient des reférences à un ensemble de Endpoints.
+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é.
Ces EnpointSlices vont inclure des références à n'importe quels Pods qui correspond aux selecteur de Service.
EndpointSlices groupent ensemble les Endpoints d'un réseau par combinaisons uniques de Services et de Ports.
From 5f263770fdd907881eb73f21b24cdf2c775a385f Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Tue, 17 Mar 2020 23:39:20 +0000
Subject: [PATCH 16/52] Tweak link to partners
---
content/en/docs/setup/_index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/setup/_index.md b/content/en/docs/setup/_index.md
index 880dd46024..7a99422dee 100644
--- a/content/en/docs/setup/_index.md
+++ b/content/en/docs/setup/_index.md
@@ -53,6 +53,6 @@ If you're learning Kubernetes, use the Docker-based solutions: tools supported b
When evaluating a solution for a production environment, consider which aspects of operating a Kubernetes cluster (or _abstractions_) you want to manage yourself or offload to a provider.
-For a list of [Certified Kubernetes](https://github.com/cncf/k8s-conformance/#certified-kubernetes) providers, see "[Partners](https://kubernetes.io/partners/#conformance)".
+[Kubernetes Partners](https://kubernetes.io/partners/#conformance) includes a list of [Certified Kubernetes](https://github.com/cncf/k8s-conformance/#certified-kubernetes) providers.
{{% /capture %}}
From a8032bd74e24a44fab7b8b738d5fa1e28c7a315a Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Tue, 17 Mar 2020 23:39:44 +0000
Subject: [PATCH 17/52] Drop k3s as a learning environment
"K3s is a highly available, certified Kubernetes distribution designed
for production workloads in unattended, resource-constrained, remote
locations or inside IoT appliances"
The product's own web page doesn't mention using it for learning.
---
content/en/docs/setup/_index.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/content/en/docs/setup/_index.md b/content/en/docs/setup/_index.md
index 7a99422dee..53c8737439 100644
--- a/content/en/docs/setup/_index.md
+++ b/content/en/docs/setup/_index.md
@@ -46,7 +46,6 @@ If you're learning Kubernetes, use the Docker-based solutions: tools supported b
| | [MicroK8s](https://microk8s.io/)|
| | [IBM Cloud Private-CE (Community Edition)](https://github.com/IBM/deploy-ibm-cloud-private) |
| | [IBM Cloud Private-CE (Community Edition) on Linux Containers](https://github.com/HSBawa/icp-ce-on-linux-containers)|
-| | [k3s](https://k3s.io)|
## Production environment
From 0bf066fa28d6e379d7a8850b96fe9d33542a3813 Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Tue, 17 Mar 2020 23:43:13 +0000
Subject: [PATCH 18/52] Drop IBM Cloud Private-CE as learning environment
These products don't seem like a good fit for learners.
---
content/en/docs/setup/_index.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/content/en/docs/setup/_index.md b/content/en/docs/setup/_index.md
index 53c8737439..35882edc4f 100644
--- a/content/en/docs/setup/_index.md
+++ b/content/en/docs/setup/_index.md
@@ -44,8 +44,6 @@ If you're learning Kubernetes, use the Docker-based solutions: tools supported b
| [kind (Kubernetes IN Docker)](/docs/setup/learning-environment/kind/) | [Docker Desktop](https://www.docker.com/products/docker-desktop)|
| | [Minishift](https://docs.okd.io/latest/minishift/)|
| | [MicroK8s](https://microk8s.io/)|
-| | [IBM Cloud Private-CE (Community Edition)](https://github.com/IBM/deploy-ibm-cloud-private) |
-| | [IBM Cloud Private-CE (Community Edition) on Linux Containers](https://github.com/HSBawa/icp-ce-on-linux-containers)|
## Production environment
From 89c952b91ec0925ba7d387f301f7af481433bade Mon Sep 17 00:00:00 2001
From: Tim Bannister
Date: Tue, 17 Mar 2020 23:47:12 +0000
Subject: [PATCH 19/52] Drop link to CDK on LXD
The page this linked to recommends considering microk8s, so let's omit
this one and leave microk8s.
Why leave microk8s? It's a certified Kubernetes distribution focused on
learning environments, and it's multiplatform (ish).
---
content/en/docs/setup/_index.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/content/en/docs/setup/_index.md b/content/en/docs/setup/_index.md
index 35882edc4f..16702b40f5 100644
--- a/content/en/docs/setup/_index.md
+++ b/content/en/docs/setup/_index.md
@@ -40,9 +40,8 @@ If you're learning Kubernetes, use the Docker-based solutions: tools supported b
|Community |Ecosystem |
| ------------ | -------- |
-| [Minikube](/docs/setup/learning-environment/minikube/) | [CDK on LXD](https://www.ubuntu.com/kubernetes/docs/install-local) |
-| [kind (Kubernetes IN Docker)](/docs/setup/learning-environment/kind/) | [Docker Desktop](https://www.docker.com/products/docker-desktop)|
-| | [Minishift](https://docs.okd.io/latest/minishift/)|
+| [Minikube](/docs/setup/learning-environment/minikube/) | [Docker Desktop](https://www.docker.com/products/docker-desktop)|
+| [kind (Kubernetes IN Docker)](/docs/setup/learning-environment/kind/) | [Minishift](https://docs.okd.io/latest/minishift/)|
| | [MicroK8s](https://microk8s.io/)|
From dfb8d40026ca64e467a1ddf3ee25fb5858d24f0c Mon Sep 17 00:00:00 2001
From: Rajesh Deshpande
Date: Fri, 20 Mar 2020 17:49:13 +0530
Subject: [PATCH 20/52] Adding example for DaemonSet Rolling Update task
Adding example for DaemonSet Rolling Update task
Adding fluentd daemonset example
Adding fluentd daemonset example
Creating fluend daemonset for update
Creating fluend daemonset for update
Adding proper description for YAML file
Adding proper description for YAML file
---
.../tasks/manage-daemon/update-daemon-set.md | 80 +++++++++++--------
.../controllers/fluentd-daemonset-update.yaml | 48 +++++++++++
.../controllers/fluentd-daemonset.yaml | 42 ++++++++++
3 files changed, 135 insertions(+), 35 deletions(-)
create mode 100644 content/en/examples/controllers/fluentd-daemonset-update.yaml
create mode 100644 content/en/examples/controllers/fluentd-daemonset.yaml
diff --git a/content/en/docs/tasks/manage-daemon/update-daemon-set.md b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
index 8eec3c1781..ccbce55313 100644
--- a/content/en/docs/tasks/manage-daemon/update-daemon-set.md
+++ b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
@@ -43,21 +43,43 @@ To enable the rolling update feature of a DaemonSet, you must set its
You may want to set [`.spec.updateStrategy.rollingUpdate.maxUnavailable`](/docs/concepts/workloads/controllers/deployment/#max-unavailable) (default
to 1) and [`.spec.minReadySeconds`](/docs/concepts/workloads/controllers/deployment/#min-ready-seconds) (default to 0) as well.
+### Creating a DaemonSet with `RollingUpdate` update strategy
-### Step 1: Checking DaemonSet `RollingUpdate` update strategy
+This YAML file specifies a DaemonSet with an update strategy as 'RollingUpdate'
-First, check the update strategy of your DaemonSet, and make sure it's set to
+{{< codenew file="controllers/fluentd-daemonset.yaml" >}}
+
+After verifying the update strategy of the DaemonSet manifest, create the DaemonSet:
+
+```shell
+kubectl create -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml
+```
+
+Alternatively, use `kubectl apply` to create the same DaemonSet if you plan to
+update the DaemonSet with `kubectl apply`.
+
+```shell
+kubectl apply -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml
+```
+
+### Checking DaemonSet `RollingUpdate` update strategy
+
+Check the update strategy of your DaemonSet, and make sure it's set to
`RollingUpdate`:
```shell
-kubectl get ds/ -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
+kubectl get ds/fluentd-elasticsearch -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}' -n kube-system
```
If you haven't created the DaemonSet in the system, check your DaemonSet
manifest with the following command instead:
```shell
-kubectl apply -f ds.yaml --dry-run=client -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
+<<<<<<< HEAD
+kubectl apply -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml --dry-run=client -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
+=======
+kubectl apply -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml --dry-run -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
+>>>>>>> Adding example for DaemonSet Rolling Update task
```
The output from both commands should be:
@@ -69,28 +91,13 @@ RollingUpdate
If the output isn't `RollingUpdate`, go back and modify the DaemonSet object or
manifest accordingly.
-### Step 2: Creating a DaemonSet with `RollingUpdate` update strategy
-If you have already created the DaemonSet, you may skip this step and jump to
-step 3.
-
-After verifying the update strategy of the DaemonSet manifest, create the DaemonSet:
-
-```shell
-kubectl create -f ds.yaml
-```
-
-Alternatively, use `kubectl apply` to create the same DaemonSet if you plan to
-update the DaemonSet with `kubectl apply`.
-
-```shell
-kubectl apply -f ds.yaml
-```
-
-### Step 3: Updating a DaemonSet template
+### Updating a DaemonSet template
Any updates to a `RollingUpdate` DaemonSet `.spec.template` will trigger a rolling
-update. This can be done with several different `kubectl` commands.
+update. Let's update the DaemonSet by applying a new YAML file. This can be done with several different `kubectl` commands.
+
+{{< codenew file="controllers/fluentd-daemonset-update.yaml" >}}
#### Declarative commands
@@ -99,21 +106,17 @@ If you update DaemonSets using
use `kubectl apply`:
```shell
-kubectl apply -f ds-v2.yaml
+kubectl apply -f https://k8s.io/examples/application/fluentd-daemonset-update.yaml
```
#### Imperative commands
If you update DaemonSets using
[imperative commands](/docs/tasks/manage-kubernetes-objects/imperative-command/),
-use `kubectl edit` or `kubectl patch`:
+use `kubectl edit` :
```shell
-kubectl edit ds/
-```
-
-```shell
-kubectl patch ds/ -p=
+kubectl edit ds/fluentd-elasticsearch -n kube-system
```
##### Updating only the container image
@@ -122,21 +125,21 @@ If you just need to update the container image in the DaemonSet template, i.e.
`.spec.template.spec.containers[*].image`, use `kubectl set image`:
```shell
-kubectl set image ds/=
+kubectl set image ds/fluentd-elasticsearch fluentd-elasticsearch=quay.io/fluentd_elasticsearch/fluentd:v2.6.0 -n kube-system
```
-### Step 4: Watching the rolling update status
+### Watching the rolling update status
Finally, watch the rollout status of the latest DaemonSet rolling update:
```shell
-kubectl rollout status ds/
+kubectl rollout status ds/fluentd-elasticsearch -n kube-system
```
When the rollout is complete, the output is similar to this:
```shell
-daemonset "" successfully rolled out
+daemonset "fluentd-elasticsearch" successfully rolled out
```
## Troubleshooting
@@ -156,7 +159,7 @@ When this happens, find the nodes that don't have the DaemonSet pods scheduled o
by comparing the output of `kubectl get nodes` and the output of:
```shell
-kubectl get pods -l = -o wide
+kubectl get pods -l name=fluentd-elasticsearch -o wide -n kube-system
```
Once you've found those nodes, delete some non-DaemonSet pods from the node to
@@ -183,6 +186,13 @@ If `.spec.minReadySeconds` is specified in the DaemonSet, clock skew between
master and nodes will make DaemonSet unable to detect the right rollout
progress.
+## Clean up
+
+Delete DaemonSet from a namespace :
+
+```shell
+kubectl delete ds fluentd-elasticsearch -n kube-system
+```
{{% /capture %}}
diff --git a/content/en/examples/controllers/fluentd-daemonset-update.yaml b/content/en/examples/controllers/fluentd-daemonset-update.yaml
new file mode 100644
index 0000000000..dcf08d4fc9
--- /dev/null
+++ b/content/en/examples/controllers/fluentd-daemonset-update.yaml
@@ -0,0 +1,48 @@
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: fluentd-elasticsearch
+ namespace: kube-system
+ labels:
+ k8s-app: fluentd-logging
+spec:
+ selector:
+ matchLabels:
+ name: fluentd-elasticsearch
+ updateStrategy:
+ type: RollingUpdate
+ rollingUpdate:
+ maxUnavailable: 1
+ template:
+ metadata:
+ labels:
+ name: fluentd-elasticsearch
+ spec:
+ tolerations:
+ # this toleration is to have the daemonset runnable on master nodes
+ # remove it if your masters can't run pods
+ - key: node-role.kubernetes.io/master
+ effect: NoSchedule
+ containers:
+ - name: fluentd-elasticsearch
+ image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
+ resources:
+ limits:
+ memory: 200Mi
+ requests:
+ cpu: 100m
+ memory: 200Mi
+ volumeMounts:
+ - name: varlog
+ mountPath: /var/log
+ - name: varlibdockercontainers
+ mountPath: /var/lib/docker/containers
+ readOnly: true
+ terminationGracePeriodSeconds: 30
+ volumes:
+ - name: varlog
+ hostPath:
+ path: /var/log
+ - name: varlibdockercontainers
+ hostPath:
+ path: /var/lib/docker/containers
diff --git a/content/en/examples/controllers/fluentd-daemonset.yaml b/content/en/examples/controllers/fluentd-daemonset.yaml
new file mode 100644
index 0000000000..0e1e7d3345
--- /dev/null
+++ b/content/en/examples/controllers/fluentd-daemonset.yaml
@@ -0,0 +1,42 @@
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: fluentd-elasticsearch
+ namespace: kube-system
+ labels:
+ k8s-app: fluentd-logging
+spec:
+ selector:
+ matchLabels:
+ name: fluentd-elasticsearch
+ updateStrategy:
+ type: RollingUpdate
+ rollingUpdate:
+ maxUnavailable: 1
+ template:
+ metadata:
+ labels:
+ name: fluentd-elasticsearch
+ spec:
+ tolerations:
+ # this toleration is to have the daemonset runnable on master nodes
+ # remove it if your masters can't run pods
+ - key: node-role.kubernetes.io/master
+ effect: NoSchedule
+ containers:
+ - name: fluentd-elasticsearch
+ image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
+ volumeMounts:
+ - name: varlog
+ mountPath: /var/log
+ - name: varlibdockercontainers
+ mountPath: /var/lib/docker/containers
+ readOnly: true
+ terminationGracePeriodSeconds: 30
+ volumes:
+ - name: varlog
+ hostPath:
+ path: /var/log
+ - name: varlibdockercontainers
+ hostPath:
+ path: /var/lib/docker/containers
From f3d82cf167a7c9003302b8e124da089ce1176b46 Mon Sep 17 00:00:00 2001
From: Rajesh Deshpande
Date: Fri, 27 Mar 2020 12:25:05 +0530
Subject: [PATCH 21/52] Removing junk chars
Removing junk chars
---
content/en/docs/tasks/manage-daemon/update-daemon-set.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/content/en/docs/tasks/manage-daemon/update-daemon-set.md b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
index ccbce55313..e4640e3ccd 100644
--- a/content/en/docs/tasks/manage-daemon/update-daemon-set.md
+++ b/content/en/docs/tasks/manage-daemon/update-daemon-set.md
@@ -75,11 +75,7 @@ If you haven't created the DaemonSet in the system, check your DaemonSet
manifest with the following command instead:
```shell
-<<<<<<< HEAD
kubectl apply -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml --dry-run=client -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
-=======
-kubectl apply -f https://k8s.io/examples/controllers/fluentd-daemonset.yaml --dry-run -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'
->>>>>>> Adding example for DaemonSet Rolling Update task
```
The output from both commands should be:
From 07fd1c617f534c174ed4f3e9482f45c71cdb7c9a Mon Sep 17 00:00:00 2001
From: Alpha
Date: Mon, 30 Mar 2020 11:51:12 +0800
Subject: [PATCH 22/52] add a yaml exmaple for type nodeport
---
.../concepts/services-networking/service.md | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md
index a62faf1e0f..da9d922b92 100644
--- a/content/en/docs/concepts/services-networking/service.md
+++ b/content/en/docs/concepts/services-networking/service.md
@@ -534,6 +534,25 @@ to just expose one or more nodes' IPs directly.
Note that this Service is visible as `:spec.ports[*].nodePort`
and `.spec.clusterIP:spec.ports[*].port`. (If the `--nodeport-addresses` flag in kube-proxy is set, would be filtered NodeIP(s).)
+For example:
+```yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: my-service
+spec:
+ type: NodePort
+ selector:
+ app: MyApp
+ ports:
+ - port: 80
+ # By default and for convenience, the targetPort is set to the same value as the port field.
+ targetPort: 80
+ # `targetPort` is the port of pod, you would like to expose
+ NodePort: 30007
+ # `NodePort` is the port of node, you would like to expose
+```
+
### Type LoadBalancer {#loadbalancer}
On cloud providers which support external load balancers, setting the `type`
From ff4ebc4fea0e2a22fa9c0224058eda62eeb5400b Mon Sep 17 00:00:00 2001
From: Alpha
Date: Mon, 30 Mar 2020 13:28:22 +0800
Subject: [PATCH 23/52] update the yaml example based on review
---
content/en/docs/concepts/services-networking/service.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md
index da9d922b92..7908f8836d 100644
--- a/content/en/docs/concepts/services-networking/service.md
+++ b/content/en/docs/concepts/services-networking/service.md
@@ -546,11 +546,11 @@ spec:
app: MyApp
ports:
- port: 80
- # By default and for convenience, the targetPort is set to the same value as the port field.
targetPort: 80
- # `targetPort` is the port of pod, you would like to expose
- NodePort: 30007
- # `NodePort` is the port of node, you would like to expose
+ # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
+ nodePort: 30007
+ # Optional field
+ # By default and for convenience, the Kubernetes control plane will allocates a port from a range (default: 30000-32767)
```
### Type LoadBalancer {#loadbalancer}
From 1fda1272a572f9643d7fe568f633d4fe48a751ed Mon Sep 17 00:00:00 2001
From: Alpha
Date: Mon, 30 Mar 2020 13:31:08 +0800
Subject: [PATCH 24/52] Update service.md
---
content/en/docs/concepts/services-networking/service.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md
index 7908f8836d..63f7fff957 100644
--- a/content/en/docs/concepts/services-networking/service.md
+++ b/content/en/docs/concepts/services-networking/service.md
@@ -550,7 +550,7 @@ spec:
# By default and for convenience, the `targetPort` is set to the same value as the `port` field.
nodePort: 30007
# Optional field
- # By default and for convenience, the Kubernetes control plane will allocates a port from a range (default: 30000-32767)
+ # By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
```
### Type LoadBalancer {#loadbalancer}
From 94ec519f6342c32acfb7306dfe5c8ea19e588435 Mon Sep 17 00:00:00 2001
From: Alpha
Date: Mon, 30 Mar 2020 23:21:25 +0800
Subject: [PATCH 25/52] Update service.md
---
content/en/docs/concepts/services-networking/service.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/en/docs/concepts/services-networking/service.md b/content/en/docs/concepts/services-networking/service.md
index 63f7fff957..65891d3ccb 100644
--- a/content/en/docs/concepts/services-networking/service.md
+++ b/content/en/docs/concepts/services-networking/service.md
@@ -545,12 +545,12 @@ spec:
selector:
app: MyApp
ports:
+ # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
- port: 80
targetPort: 80
- # By default and for convenience, the `targetPort` is set to the same value as the `port` field.
- nodePort: 30007
# Optional field
# By default and for convenience, the Kubernetes control plane will allocate a port from a range (default: 30000-32767)
+ nodePort: 30007
```
### Type LoadBalancer {#loadbalancer}
From 56c18bcc080f4f78a5e0a8845fa42f868e8aa440 Mon Sep 17 00:00:00 2001
From: Maksym Vlasov
Date: Tue, 31 Mar 2020 21:14:44 +0300
Subject: [PATCH 26/52] Add minimum requirement content (#3)
* Localize front page
* Localize heading and subheading URLs
Close kubernetes-i18n-ukrainian/website#6
Close kubernetes-i18n-ukrainian/website#11
* Uk translation for k8s basics
Close kubernetes-i18n-ukrainian/website#9
* Uk localization homepage
PR: kubernetes-i18n-ukrainian/website#102
* Buildable version of the Ukrainian website
* Adding localized content of the what-is-kubernetes.md
Close kubernetes-i18n-ukrainian/website#12
* Localizing site strings in toml file
* Localizing tutorials
Close kubernetes-i18n-ukrainian/website#32
* Localizing templates
* Localize glossary terms
Close kubernetes-i18n-ukrainian/website#2
* Create glossary for UK contributors
Close kubernetes-i18n-ukrainian/website#101
* Add butuzov to dream team
Co-authored-by: Anastasiya Kulyk
Co-Authored-By: Maksym Vlasov
Co-authored-by: Oleg Butuzov
---
OWNERS_ALIASES | 2 +
README-uk.md | 4 +-
content/uk/_common-resources/index.md | 3 +
content/uk/_index.html | 85 ++
content/uk/case-studies/_index.html | 13 +
content/uk/docs/_index.md | 3 +
content/uk/docs/concepts/_index.md | 123 ++
.../uk/docs/concepts/configuration/_index.md | 5 +
.../manage-compute-resources-container.md | 623 +++++++++
.../uk/docs/concepts/configuration/secret.md | 1054 +++++++++++++++
content/uk/docs/concepts/overview/_index.md | 4 +
.../concepts/overview/what-is-kubernetes.md | 185 +++
.../concepts/services-networking/_index.md | 4 +
.../services-networking/dual-stack.md | 109 ++
.../services-networking/endpoint-slices.md | 188 +++
.../services-networking/service-topology.md | 127 ++
.../concepts/services-networking/service.md | 1197 +++++++++++++++++
content/uk/docs/concepts/storage/_index.md | 4 +
.../concepts/storage/persistent-volumes.md | 736 ++++++++++
content/uk/docs/concepts/workloads/_index.md | 4 +
.../concepts/workloads/controllers/_index.md | 4 +
.../workloads/controllers/deployment.md | 1152 ++++++++++++++++
.../controllers/jobs-run-to-completion.md | 480 +++++++
.../controllers/replicationcontroller.md | 291 ++++
content/uk/docs/contribute/localization_uk.md | 123 ++
content/uk/docs/home/_index.md | 58 +
.../docs/reference/glossary/applications.md | 16 +
.../glossary/cluster-infrastructure.md | 17 +
.../reference/glossary/cluster-operations.md | 17 +
content/uk/docs/reference/glossary/cluster.md | 22 +
.../docs/reference/glossary/control-plane.md | 17 +
.../uk/docs/reference/glossary/data-plane.md | 17 +
.../uk/docs/reference/glossary/deployment.md | 23 +
content/uk/docs/reference/glossary/index.md | 17 +
.../docs/reference/glossary/kube-apiserver.md | 29 +
.../glossary/kube-controller-manager.md | 22 +
.../uk/docs/reference/glossary/kube-proxy.md | 33 +
.../docs/reference/glossary/kube-scheduler.md | 22 +
content/uk/docs/reference/glossary/kubelet.md | 23 +
content/uk/docs/reference/glossary/pod.md | 23 +
.../uk/docs/reference/glossary/selector.md | 22 +
content/uk/docs/reference/glossary/service.md | 24 +
content/uk/docs/setup/_index.md | 136 ++
.../horizontal-pod-autoscale.md | 293 ++++
.../uk/docs/templates/feature-state-alpha.txt | 7 +
.../uk/docs/templates/feature-state-beta.txt | 22 +
.../templates/feature-state-deprecated.txt | 4 +
.../docs/templates/feature-state-stable.txt | 11 +
content/uk/docs/templates/index.md | 15 +
content/uk/docs/tutorials/_index.md | 90 ++
content/uk/docs/tutorials/hello-minikube.md | 394 ++++++
.../tutorials/kubernetes-basics/_index.html | 138 ++
.../create-cluster/_index.md | 4 +
.../create-cluster/cluster-interactive.html | 37 +
.../create-cluster/cluster-intro.html | 152 +++
.../kubernetes-basics/deploy-app/_index.md | 4 +
.../deploy-app/deploy-interactive.html | 41 +
.../deploy-app/deploy-intro.html | 151 +++
.../kubernetes-basics/explore/_index.md | 4 +
.../explore/explore-interactive.html | 41 +
.../explore/explore-intro.html | 200 +++
.../kubernetes-basics/expose/_index.md | 4 +
.../expose/expose-interactive.html | 38 +
.../expose/expose-intro.html | 169 +++
.../kubernetes-basics/scale/_index.md | 4 +
.../scale/scale-interactive.html | 40 +
.../kubernetes-basics/scale/scale-intro.html | 145 ++
.../kubernetes-basics/update/_index.md | 4 +
.../update/update-interactive.html | 37 +
.../update/update-intro.html | 168 +++
content/uk/examples/controllers/job.yaml | 14 +
.../controllers/nginx-deployment.yaml | 21 +
.../uk/examples/controllers/replication.yaml | 19 +
content/uk/examples/minikube/Dockerfile | 4 +
content/uk/examples/minikube/server.js | 9 +
.../networking/dual-stack-default-svc.yaml | 11 +
.../networking/dual-stack-ipv4-svc.yaml | 12 +
.../networking/dual-stack-ipv6-lb-svc.yaml | 15 +
.../networking/dual-stack-ipv6-svc.yaml | 12 +
i18n/uk.toml | 247 ++++
80 files changed, 9640 insertions(+), 2 deletions(-)
create mode 100644 content/uk/_common-resources/index.md
create mode 100644 content/uk/_index.html
create mode 100644 content/uk/case-studies/_index.html
create mode 100644 content/uk/docs/_index.md
create mode 100644 content/uk/docs/concepts/_index.md
create mode 100644 content/uk/docs/concepts/configuration/_index.md
create mode 100644 content/uk/docs/concepts/configuration/manage-compute-resources-container.md
create mode 100644 content/uk/docs/concepts/configuration/secret.md
create mode 100644 content/uk/docs/concepts/overview/_index.md
create mode 100644 content/uk/docs/concepts/overview/what-is-kubernetes.md
create mode 100644 content/uk/docs/concepts/services-networking/_index.md
create mode 100644 content/uk/docs/concepts/services-networking/dual-stack.md
create mode 100644 content/uk/docs/concepts/services-networking/endpoint-slices.md
create mode 100644 content/uk/docs/concepts/services-networking/service-topology.md
create mode 100644 content/uk/docs/concepts/services-networking/service.md
create mode 100644 content/uk/docs/concepts/storage/_index.md
create mode 100644 content/uk/docs/concepts/storage/persistent-volumes.md
create mode 100644 content/uk/docs/concepts/workloads/_index.md
create mode 100644 content/uk/docs/concepts/workloads/controllers/_index.md
create mode 100644 content/uk/docs/concepts/workloads/controllers/deployment.md
create mode 100644 content/uk/docs/concepts/workloads/controllers/jobs-run-to-completion.md
create mode 100644 content/uk/docs/concepts/workloads/controllers/replicationcontroller.md
create mode 100644 content/uk/docs/contribute/localization_uk.md
create mode 100644 content/uk/docs/home/_index.md
create mode 100644 content/uk/docs/reference/glossary/applications.md
create mode 100644 content/uk/docs/reference/glossary/cluster-infrastructure.md
create mode 100644 content/uk/docs/reference/glossary/cluster-operations.md
create mode 100644 content/uk/docs/reference/glossary/cluster.md
create mode 100644 content/uk/docs/reference/glossary/control-plane.md
create mode 100644 content/uk/docs/reference/glossary/data-plane.md
create mode 100644 content/uk/docs/reference/glossary/deployment.md
create mode 100644 content/uk/docs/reference/glossary/index.md
create mode 100644 content/uk/docs/reference/glossary/kube-apiserver.md
create mode 100644 content/uk/docs/reference/glossary/kube-controller-manager.md
create mode 100644 content/uk/docs/reference/glossary/kube-proxy.md
create mode 100644 content/uk/docs/reference/glossary/kube-scheduler.md
create mode 100644 content/uk/docs/reference/glossary/kubelet.md
create mode 100644 content/uk/docs/reference/glossary/pod.md
create mode 100644 content/uk/docs/reference/glossary/selector.md
create mode 100755 content/uk/docs/reference/glossary/service.md
create mode 100644 content/uk/docs/setup/_index.md
create mode 100644 content/uk/docs/tasks/run-application/horizontal-pod-autoscale.md
create mode 100644 content/uk/docs/templates/feature-state-alpha.txt
create mode 100644 content/uk/docs/templates/feature-state-beta.txt
create mode 100644 content/uk/docs/templates/feature-state-deprecated.txt
create mode 100644 content/uk/docs/templates/feature-state-stable.txt
create mode 100644 content/uk/docs/templates/index.md
create mode 100644 content/uk/docs/tutorials/_index.md
create mode 100644 content/uk/docs/tutorials/hello-minikube.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/_index.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/create-cluster/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/deploy-app/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/explore/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/explore/explore-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/explore/explore-intro.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/expose/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/expose/expose-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/expose/expose-intro.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/scale/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/scale/scale-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/scale/scale-intro.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/update/_index.md
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/update/update-interactive.html
create mode 100644 content/uk/docs/tutorials/kubernetes-basics/update/update-intro.html
create mode 100644 content/uk/examples/controllers/job.yaml
create mode 100644 content/uk/examples/controllers/nginx-deployment.yaml
create mode 100644 content/uk/examples/controllers/replication.yaml
create mode 100644 content/uk/examples/minikube/Dockerfile
create mode 100644 content/uk/examples/minikube/server.js
create mode 100644 content/uk/examples/service/networking/dual-stack-default-svc.yaml
create mode 100644 content/uk/examples/service/networking/dual-stack-ipv4-svc.yaml
create mode 100644 content/uk/examples/service/networking/dual-stack-ipv6-lb-svc.yaml
create mode 100644 content/uk/examples/service/networking/dual-stack-ipv6-svc.yaml
create mode 100644 i18n/uk.toml
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index ed3ccdbb96..9046573658 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -226,9 +226,11 @@ aliases:
- kpucynski
sig-docs-uk-owners: # Admins for Ukrainian content
- anastyakulyk
+ - butuzov
- MaxymVlasov
sig-docs-uk-reviews: # PR reviews for Ukrainian content
- anastyakulyk
+ - butuzov
- idvoretskyi
- MaxymVlasov
- Potapy4
diff --git a/README-uk.md b/README-uk.md
index 68d3b0db0a..43d782e09a 100644
--- a/README-uk.md
+++ b/README-uk.md
@@ -39,7 +39,7 @@ make docker-image
make docker-serve
```
-Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте початковий код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
+Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте вихідний код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
## Запуск сайту локально зa допомогою Hugo
@@ -51,7 +51,7 @@ make docker-serve
make serve
```
-Команда запустить локальний Hugo-сервер на порту 1313. Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте початковий код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
+Команда запустить локальний Hugo-сервер на порту 1313. Відкрийте у своєму браузері http://localhost:1313, щоб побачити вебсайт. По мірі того, як ви змінюєте вихідний код, Hugo актуалізує вебсайт відповідно до внесених змін і оновлює сторінку у браузері.
## Спільнота, обговорення, внесок і підтримка
diff --git a/content/uk/_common-resources/index.md b/content/uk/_common-resources/index.md
new file mode 100644
index 0000000000..ca03031f1e
--- /dev/null
+++ b/content/uk/_common-resources/index.md
@@ -0,0 +1,3 @@
+---
+headless: true
+---
diff --git a/content/uk/_index.html b/content/uk/_index.html
new file mode 100644
index 0000000000..02df4d395d
--- /dev/null
+++ b/content/uk/_index.html
@@ -0,0 +1,85 @@
+---
+title: "Довершена система оркестрації контейнерів"
+abstract: "Автоматичне розгортання, масштабування і управління контейнерами"
+cid: home
+---
+
+{{< announcement >}}
+
+{{< deprecationwarning >}}
+
+{{< blocks/section id="oceanNodes" >}}
+{{% blocks/feature image="flower" %}}
+
+### [Kubernetes (K8s)]({{< relref "/docs/concepts/overview/what-is-kubernetes" >}}) - це система з відкритим вихідним кодом для автоматичного розгортання, масштабування і управління контейнеризованими застосунками.
+
+
+Вона об'єднує контейнери, що утворюють застосунок, у логічні елементи для легкого управління і виявлення. В основі Kubernetes - [15 років досвіду запуску і виконання застосунків у продуктивних середовищах Google](http://queue.acm.org/detail.cfm?id=2898444), поєднані з найкращими ідеями і практиками від спільноти.
+{{% /blocks/feature %}}
+
+{{% blocks/feature image="scalable" %}}
+
+#### Глобальне масштабування
+
+
+Заснований на тих самих принципах, завдяки яким Google запускає мільярди контейнерів щотижня, Kubernetes масштабується без потреби збільшення вашого штату з експлуатації.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature image="blocks" %}}
+
+#### Невичерпна функціональність
+
+
+Запущений для локального тестування чи у глобальній корпорації, Kubernetes динамічно зростатиме з вами, забезпечуючи регулярну і легку доставку ваших застосунків незалежно від рівня складності ваших потреб.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature image="suitcase" %}}
+
+#### Працює всюди
+
+
+Kubernetes - проект з відкритим вихідним кодом. Він дозволяє скористатися перевагами локальної, гібридної чи хмарної інфраструктури, щоб легко переміщати застосунки туди, куди вам потрібно.
+
+{{% /blocks/feature %}}
+
+{{< /blocks/section >}}
+
+{{< blocks/section id="video" background-image="kub_video_banner_homepage" >}}
+
"""
+other = """Ми є проектом CNCF"""
+
+[main_community_explore]
+# other = "Explore the community"
+other = "Познайомитись із спільнотою"
+
+[main_contribute]
+# other = "Contribute"
+other = "Допомогти проекту"
+
+[main_copyright_notice]
+# other = """The Linux Foundation ®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page"""
+other = """The Linux Foundation ®. Всі права застережено. The Linux Foundation є зареєстрованою торговою маркою. Перелік торгових марок The Linux Foundation ви знайдете на нашій сторінці Використання торгових марок"""
+
+[main_documentation_license]
+# other = """The Kubernetes Authors | Documentation Distributed under CC BY 4.0"""
+other = """Автори Kubernetes | Документація розповсюджується під ліцензією CC BY 4.0"""
+
+[main_edit_this_page]
+# other = "Edit This Page"
+other = "Редагувати цю сторінку"
+
+[main_github_create_an_issue]
+# other = "Create an Issue"
+other = "Створити issue"
+
+[main_github_invite]
+# other = "Interested in hacking on the core Kubernetes code base?"
+other = "Хочете зламати основну кодову базу Kubernetes?"
+
+[main_github_view_on]
+# other = "View On GitHub"
+other = "Переглянути у GitHub"
+
+[main_kubernetes_features]
+# other = "Kubernetes Features"
+other = "Функціональні можливості Kubernetes"
+
+[main_kubeweekly_baseline]
+# other = "Interested in receiving the latest Kubernetes news? Sign up for KubeWeekly."
+other = "Хочете отримувати останні новини Kubernetes? Підпишіться на KubeWeekly."
+
+[main_kubernetes_past_link]
+# other = "View past newsletters"
+other = "Переглянути попередні інформаційні розсилки"
+
+[main_kubeweekly_signup]
+# other = "Subscribe"
+other = "Підписатися"
+
+[main_page_history]
+# other ="Page History"
+other ="Історія сторінки"
+
+[main_page_last_modified_on]
+# other = "Page last modified on"
+other = "Сторінка востаннє редагувалася"
+
+[main_read_about]
+# other = "Read about"
+other = "Прочитати про"
+
+[main_read_more]
+# other = "Read more"
+other = "Прочитати більше"
+
+[note]
+# other = "Note:"
+other = "Примітка:"
+
+[objectives_heading]
+# other = "Objectives"
+other = "Цілі"
+
+[prerequisites_heading]
+# other = "Before you begin"
+other = "Перш ніж ви розпочнете"
+
+[ui_search_placeholder]
+# other = "Search"
+other = "Пошук"
+
+[version_check_mustbe]
+# other = "Your Kubernetes server must be version "
+other = "Версія вашого Kubernetes сервера має бути "
+
+[version_check_mustbeorlater]
+# other = "Your Kubernetes server must be at or later than version "
+other = "Версія вашого Kubernetes сервера має дорівнювати або бути молодшою ніж "
+
+[version_check_tocheck]
+# other = "To check the version, enter "
+other = "Для перевірки версії введіть "
+
+[warning]
+# other = "Warning:"
+other = "Попередження:"
+
+[whatsnext_heading]
+# other = "What's next"
+other = "Що далі"
From dc2f875952adcf90b7f8541519acf19259b17e43 Mon Sep 17 00:00:00 2001
From: tanjunchen
Date: Fri, 3 Apr 2020 23:39:56 +0800
Subject: [PATCH 27/52] add tanjunchen as reviewer of /zh
---
OWNERS_ALIASES | 1 +
1 file changed, 1 insertion(+)
diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index 8a8da8978e..33922084fc 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -181,6 +181,7 @@ aliases:
- idealhack
- markthink
- SataQiu
+ - tanjunchen
- tengqm
- xiangpengzhao
- xichengliudui
From d36428fa40e7d5cbf35480ed612cd9ec04c87e37 Mon Sep 17 00:00:00 2001
From: Arhell
Date: Sun, 5 Apr 2020 02:57:55 +0300
Subject: [PATCH 28/52] Fix left menu button on mobile (home page)
---
content/zh/docs/home/_index.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/zh/docs/home/_index.md b/content/zh/docs/home/_index.md
index d50c07e091..cf6cdc0032 100644
--- a/content/zh/docs/home/_index.md
+++ b/content/zh/docs/home/_index.md
@@ -3,7 +3,7 @@ title: Kubernetes 文档
noedit: true
cid: docsHome
layout: docsportal_home
-class: gridPage
+class: gridPage gridPageHome
linkTitle: "主页"
main_menu: true
weight: 10
From 7b27b3a662cbe8b3f0e2d6838b3ebc00935e3118 Mon Sep 17 00:00:00 2001
From: Pierre-Yves Aillet
Date: Thu, 19 Mar 2020 21:51:22 +0100
Subject: [PATCH 29/52] doc: add precision on init container start order
Update content/en/docs/concepts/workloads/pods/init-containers.md
Co-Authored-By: Tim Bannister
---
.../docs/concepts/workloads/pods/init-containers.md | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/content/en/docs/concepts/workloads/pods/init-containers.md b/content/en/docs/concepts/workloads/pods/init-containers.md
index 14e7054a86..2ecbdd702a 100644
--- a/content/en/docs/concepts/workloads/pods/init-containers.md
+++ b/content/en/docs/concepts/workloads/pods/init-containers.md
@@ -71,8 +71,8 @@ have some advantages for start-up related code:
a mechanism to block or delay app container startup until a set of preconditions are met. Once
preconditions are met, all of the app containers in a Pod can start in parallel.
* Init containers can securely run utilities or custom code that would otherwise make an app
- container image less secure. By keeping unnecessary tools separate you can limit the attack
- surface of your app container image.
+ container image less secure. By keeping unnecessary tools separate you can limit the attack
+ surface of your app container image.
### Examples
@@ -245,8 +245,11 @@ init containers. [What's next](#what-s-next) contains a link to a more detailed
## Detailed behavior
-During the startup of a Pod, each init container starts in order, after the
-network and volumes are initialized. Each container must exit successfully before
+During Pod startup, the kubelet delays running init containers until the networking
+and storage are ready. Then the kubelet runs the Pod's init containers in the order
+they appear in the Pod's spec.
+
+Each init container must exit successfully before
the next container starts. If a container fails to start due to the runtime or
exits with failure, it is retried according to the Pod `restartPolicy`. However,
if the Pod `restartPolicy` is set to Always, the init containers use
From b6449353e68055db913266736e64dc0154364a4f Mon Sep 17 00:00:00 2001
From: Arhell
Date: Sun, 5 Apr 2020 20:58:16 +0300
Subject: [PATCH 30/52] fix docs home page on mobile renders poorly
---
static/css/gridpage.css | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/static/css/gridpage.css b/static/css/gridpage.css
index d762aeb19c..297c7d3637 100644
--- a/static/css/gridpage.css
+++ b/static/css/gridpage.css
@@ -23,7 +23,6 @@
min-height: 152px;
}
-
.gridPage p {
color: rgb(26,26,26);
margin-left: 0 !important;
@@ -289,6 +288,15 @@ section.bullets .content {
}
}
+@media screen and (max-width: 768px){
+ .launch-card {
+ width: 100%;
+ margin-bottom: 30px;
+ padding: 0;
+ min-height: auto;
+ }
+}
+
@media screen and (max-width: 640px){
.case-study {
width: 100%;
From b8df3044842e02cd9496c87af796fba1d7bae10f Mon Sep 17 00:00:00 2001
From: Chao Xu
Date: Thu, 20 Feb 2020 11:35:35 -0800
Subject: [PATCH 31/52] Introducing concepts about Konnectivity Service.
---
.../architecture/master-node-communication.md | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/content/en/docs/concepts/architecture/master-node-communication.md b/content/en/docs/concepts/architecture/master-node-communication.md
index 8a4493e49b..ff536d160b 100644
--- a/content/en/docs/concepts/architecture/master-node-communication.md
+++ b/content/en/docs/concepts/architecture/master-node-communication.md
@@ -97,13 +97,28 @@ public networks.
### SSH Tunnels
-Kubernetes supports SSH tunnels to protect the Master -> Cluster communication
+Kubernetes supports SSH tunnels to protect the Master → Cluster communication
paths. In this configuration, the apiserver initiates an SSH tunnel to each node
in the cluster (connecting to the ssh server listening on port 22) and passes
all traffic destined for a kubelet, node, pod, or service through the tunnel.
This tunnel ensures that the traffic is not exposed outside of the network in
which the nodes are running.
-SSH tunnels are currently deprecated so you shouldn't opt to use them unless you know what you are doing. A replacement for this communication channel is being designed.
+SSH tunnels are currently deprecated so you shouldn't opt to use them unless you
+know what you are doing. The Konnectivity service is a replacement for this
+communication channel.
+
+### Konnectivity service
+{{< feature-state for_k8s_version="v1.18" state="beta" >}}
+
+As a replacement to the SSH tunnels, the Konnectivity service provides TCP
+level proxy for the Master → Cluster communication. The Konnectivity consists of
+two parts, the Konnectivity server and the Konnectivity agents, running in the
+Master network and the Cluster network respectively. The Konnectivity agents
+initiate connections to the Konnectivity server and maintain the connections.
+All Master → Cluster traffic then goes through these connections.
+
+See [Konnectivity Service Setup](/docs/tasks/setup-konnectivity/) on how to set
+it up in your cluster.
{{% /capture %}}
From ac1d86457505d9b2be53e121c13559ad4d9612ca Mon Sep 17 00:00:00 2001
From: Chao Xu
Date: Fri, 20 Mar 2020 15:31:19 -0700
Subject: [PATCH 32/52] Instructions on how to set up the Konnectivity service.
---
.../docs/tasks/setup-konnectivity/_index.md | 5 ++
.../setup-konnectivity/setup-konnectivity.md | 37 ++++++++++
.../egress-selector-configuration.yaml | 21 ++++++
.../konnectivity/konnectivity-agent.yaml | 53 ++++++++++++++
.../admin/konnectivity/konnectivity-rbac.yaml | 24 +++++++
.../konnectivity/konnectivity-server.yaml | 70 +++++++++++++++++++
6 files changed, 210 insertions(+)
create mode 100755 content/en/docs/tasks/setup-konnectivity/_index.md
create mode 100644 content/en/docs/tasks/setup-konnectivity/setup-konnectivity.md
create mode 100644 content/en/examples/admin/konnectivity/egress-selector-configuration.yaml
create mode 100644 content/en/examples/admin/konnectivity/konnectivity-agent.yaml
create mode 100644 content/en/examples/admin/konnectivity/konnectivity-rbac.yaml
create mode 100644 content/en/examples/admin/konnectivity/konnectivity-server.yaml
diff --git a/content/en/docs/tasks/setup-konnectivity/_index.md b/content/en/docs/tasks/setup-konnectivity/_index.md
new file mode 100755
index 0000000000..09f254eba0
--- /dev/null
+++ b/content/en/docs/tasks/setup-konnectivity/_index.md
@@ -0,0 +1,5 @@
+---
+title: "Setup Konnectivity Service"
+weight: 20
+---
+
diff --git a/content/en/docs/tasks/setup-konnectivity/setup-konnectivity.md b/content/en/docs/tasks/setup-konnectivity/setup-konnectivity.md
new file mode 100644
index 0000000000..0fdbd0127d
--- /dev/null
+++ b/content/en/docs/tasks/setup-konnectivity/setup-konnectivity.md
@@ -0,0 +1,37 @@
+---
+title: Setup Konnectivity Service
+content_template: templates/task
+weight: 110
+---
+
+The Konnectivity service provides TCP level proxy for the Master → Cluster
+communication.
+
+You can set it up with the following steps.
+
+First, you need to configure the API Server to use the Konnectivity service
+to direct its network traffic to cluster nodes:
+1. Set the `--egress-selector-config-file` flag of the API Server, it is the
+path to the API Server egress configuration file.
+2. At the path, create a configuration file. For example,
+
+{{< codenew file="admin/konnectivity/egress-selector-configuration.yaml" >}}
+
+Next, you need to deploy the Konnectivity service server and agents.
+[kubernetes-sigs/apiserver-network-proxy](https://github.com/kubernetes-sigs/apiserver-network-proxy)
+is a reference implementation.
+
+Deploy the Konnectivity server on your master node. The provided yaml assuming
+Kubernetes components are deployed as {{< glossary_tooltip text="static pod"
+term_id="static-pod" >}} in your cluster. If not , you can deploy it as a
+Daemonset to be reliable.
+
+{{< codenew file="admin/konnectivity/konnectivity-server.yaml" >}}
+
+Then deploy the Konnectivity agents in your cluster:
+
+{{< codenew file="admin/konnectivity/konnectivity-agent.yaml" >}}
+
+Last, if RBAC is enabled in your cluster, create the relevant RBAC rules:
+
+{{< codenew file="admin/konnectivity/konnectivity-rbac.yaml" >}}
diff --git a/content/en/examples/admin/konnectivity/egress-selector-configuration.yaml b/content/en/examples/admin/konnectivity/egress-selector-configuration.yaml
new file mode 100644
index 0000000000..6659ff3fbb
--- /dev/null
+++ b/content/en/examples/admin/konnectivity/egress-selector-configuration.yaml
@@ -0,0 +1,21 @@
+apiVersion: apiserver.k8s.io/v1beta1
+kind: EgressSelectorConfiguration
+egressSelections:
+# Since we want to control the egress traffic to the cluster, we use the
+# "cluster" as the name. Other supported values are "etcd", and "master".
+- name: cluster
+ connection:
+ # This controls the protocol between the API Server and the Konnectivity
+ # server. Supported values are "GRPC" and "HTTPConnect". There is no
+ # end user visible difference between the two modes. You need to set the
+ # Konnectivity server to work in the same mode.
+ proxyProtocol: GRPC
+ transport:
+ # This controls what transport the API Server uses to communicate with the
+ # Konnectivity server. UDS is recommended if the Konnectivity server
+ # locates on the same machine as the API Server. You need to configure the
+ # Konnectivity server to listen on the same UDS socket.
+ # The other supported transport is "tcp". You will need to set up TLS
+ # config to secure the TCP transport.
+ uds:
+ udsName: /etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket
diff --git a/content/en/examples/admin/konnectivity/konnectivity-agent.yaml b/content/en/examples/admin/konnectivity/konnectivity-agent.yaml
new file mode 100644
index 0000000000..c3dc71040b
--- /dev/null
+++ b/content/en/examples/admin/konnectivity/konnectivity-agent.yaml
@@ -0,0 +1,53 @@
+apiVersion: apps/v1
+# Alternatively, you can deploy the agents as Deployments. It is not necessary
+# to have an agent on each node.
+kind: DaemonSet
+metadata:
+ labels:
+ addonmanager.kubernetes.io/mode: Reconcile
+ k8s-app: konnectivity-agent
+ namespace: kube-system
+ name: konnectivity-agent
+spec:
+ selector:
+ matchLabels:
+ k8s-app: konnectivity-agent
+ template:
+ metadata:
+ labels:
+ k8s-app: konnectivity-agent
+ spec:
+ priorityClassName: system-cluster-critical
+ tolerations:
+ - key: "CriticalAddonsOnly"
+ operator: "Exists"
+ containers:
+ - image: us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-agent:v0.0.8
+ name: konnectivity-agent
+ command: ["/proxy-agent"]
+ args: [
+ "--logtostderr=true",
+ "--ca-cert=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt",
+ # Since the konnectivity server runs with hostNetwork=true,
+ # this is the IP address of the master machine.
+ "--proxy-server-host=35.225.206.7",
+ "--proxy-server-port=8132",
+ "--service-account-token-path=/var/run/secrets/tokens/konnectivity-agent-token"
+ ]
+ volumeMounts:
+ - mountPath: /var/run/secrets/tokens
+ name: konnectivity-agent-token
+ livenessProbe:
+ httpGet:
+ port: 8093
+ path: /healthz
+ initialDelaySeconds: 15
+ timeoutSeconds: 15
+ serviceAccountName: konnectivity-agent
+ volumes:
+ - name: konnectivity-agent-token
+ projected:
+ sources:
+ - serviceAccountToken:
+ path: konnectivity-agent-token
+ audience: system:konnectivity-server
diff --git a/content/en/examples/admin/konnectivity/konnectivity-rbac.yaml b/content/en/examples/admin/konnectivity/konnectivity-rbac.yaml
new file mode 100644
index 0000000000..7687f49b77
--- /dev/null
+++ b/content/en/examples/admin/konnectivity/konnectivity-rbac.yaml
@@ -0,0 +1,24 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: system:konnectivity-server
+ labels:
+ kubernetes.io/cluster-service: "true"
+ addonmanager.kubernetes.io/mode: Reconcile
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: system:auth-delegator
+subjects:
+ - apiGroup: rbac.authorization.k8s.io
+ kind: User
+ name: system:konnectivity-server
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: konnectivity-agent
+ namespace: kube-system
+ labels:
+ kubernetes.io/cluster-service: "true"
+ addonmanager.kubernetes.io/mode: Reconcile
diff --git a/content/en/examples/admin/konnectivity/konnectivity-server.yaml b/content/en/examples/admin/konnectivity/konnectivity-server.yaml
new file mode 100644
index 0000000000..730c26c66a
--- /dev/null
+++ b/content/en/examples/admin/konnectivity/konnectivity-server.yaml
@@ -0,0 +1,70 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: konnectivity-server
+ namespace: kube-system
+spec:
+ priorityClassName: system-cluster-critical
+ hostNetwork: true
+ containers:
+ - name: konnectivity-server-container
+ image: us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-server:v0.0.8
+ command: ["/proxy-server"]
+ args: [
+ "--log-file=/var/log/konnectivity-server.log",
+ "--logtostderr=false",
+ "--log-file-max-size=0",
+ # This needs to be consistent with the value set in egressSelectorConfiguration.
+ "--uds-name=/etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket",
+ # The following two lines assume the Konnectivity server is
+ # deployed on the same machine as the apiserver, and the certs and
+ # key of the API Server are at the specified location.
+ "--cluster-cert=/etc/srv/kubernetes/pki/apiserver.crt",
+ "--cluster-key=/etc/srv/kubernetes/pki/apiserver.key",
+ # This needs to be consistent with the value set in egressSelectorConfiguration.
+ "--mode=grpc",
+ "--server-port=0",
+ "--agent-port=8132",
+ "--admin-port=8133",
+ "--agent-namespace=kube-system",
+ "--agent-service-account=konnectivity-agent",
+ "--kubeconfig=/etc/srv/kubernetes/konnectivity-server/kubeconfig",
+ "--authentication-audience=system:konnectivity-server"
+ ]
+ livenessProbe:
+ httpGet:
+ scheme: HTTP
+ host: 127.0.0.1
+ port: 8133
+ path: /healthz
+ initialDelaySeconds: 30
+ timeoutSeconds: 60
+ ports:
+ - name: agentport
+ containerPort: 8132
+ hostPort: 8132
+ - name: adminport
+ containerPort: 8133
+ hostPort: 8133
+ volumeMounts:
+ - name: varlogkonnectivityserver
+ mountPath: /var/log/konnectivity-server.log
+ readOnly: false
+ - name: pki
+ mountPath: /etc/srv/kubernetes/pki
+ readOnly: true
+ - name: konnectivity-uds
+ mountPath: /etc/srv/kubernetes/konnectivity-server
+ readOnly: false
+ volumes:
+ - name: varlogkonnectivityserver
+ hostPath:
+ path: /var/log/konnectivity-server.log
+ type: FileOrCreate
+ - name: pki
+ hostPath:
+ path: /etc/srv/kubernetes/pki
+ - name: konnectivity-uds
+ hostPath:
+ path: /etc/srv/kubernetes/konnectivity-server
+ type: DirectoryOrCreate
From 8ba1410113f5593c5686c5b80baa9e9093755e89 Mon Sep 17 00:00:00 2001
From: "Mr.Hien"
Date: Mon, 6 Apr 2020 08:22:56 +0700
Subject: [PATCH 33/52] Update install-kubectl.md
For install of kubectl on debian based distros, also install gnupg2 for apt-key add to work
---
content/en/docs/tasks/tools/install-kubectl.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/en/docs/tasks/tools/install-kubectl.md b/content/en/docs/tasks/tools/install-kubectl.md
index 4a0be4509a..cdbe96f148 100644
--- a/content/en/docs/tasks/tools/install-kubectl.md
+++ b/content/en/docs/tasks/tools/install-kubectl.md
@@ -59,7 +59,7 @@ You must use a kubectl version that is within one minor version difference of yo
{{< tabs name="kubectl_install" >}}
{{< tab name="Ubuntu, Debian or HypriotOS" codelang="bash" >}}
-sudo apt-get update && sudo apt-get install -y apt-transport-https
+sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
From 202488677759e81fd73df7bfbda1a8253b0dcefe Mon Sep 17 00:00:00 2001
From: Taylor Dolezal
Date: Wed, 1 Apr 2020 16:52:56 -0700
Subject: [PATCH 34/52] Update PR template to specify desired git commit
messages
Co-Authored-By: Tim Bannister
---
.github/PULL_REQUEST_TEMPLATE.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index c7040f7fa8..25b0ff4753 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -6,6 +6,8 @@
your pull request. The description should explain what will change,
and why.
+ PLEASE title the FIRST commit appropriately, so that if you squash all
+ your commits into one, the combined commit message makes sense.
For overall help on editing and submitting pull requests, visit:
https://kubernetes.io/docs/contribute/start/#improve-existing-content
From 9c864c965bfcf4df9fce8b655e20414a47492665 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?=
Date: Sun, 16 Feb 2020 20:47:35 +0100
Subject: [PATCH 35/52] Add a Progressive Web App manifest
Add a valid apple-touch-icon link in header
Co-Authored-By: Tim Bannister
---
layouts/partials/head.html | 2 ++
static/images/kubernetes-192x192.png | Bin 0 -> 87040 bytes
static/images/kubernetes-512x512.png | Bin 0 -> 221877 bytes
static/manifest.webmanifest | 22 ++++++++++++++++++++++
4 files changed, 24 insertions(+)
create mode 100644 static/images/kubernetes-192x192.png
create mode 100644 static/images/kubernetes-512x512.png
create mode 100644 static/manifest.webmanifest
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index 1e34c3c903..16b09cd103 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -52,3 +52,5 @@
{{ with .Params.js }}{{ range (split . ",") }}
{{ end }}{{ else }}{{ end }}
+
+
diff --git a/static/images/kubernetes-192x192.png b/static/images/kubernetes-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..49236b71bbafa6e29cd50d7ac6f9e173f1b3f960
GIT binary patch
literal 87040
zcmY(p1y~(H&nS#@@B@(Vw`2TjenQBOz$;*S$
z{>1@c(BNobkbg1ozZV!dF4#Y5e=#r_aJ>J;mBFe1%L4%h7HR^#_z`a7qu~UHY9elv9@*Mb^A*C9}eEX_&+ieDe-?;oUOi+YRG>h
z7PWIUCFWpcXJjT7fF~v<=65tP<5d=u`0wz)t*@j%oSp4?nV4K%T^U{380{R*nOJyu
zc$k=3nOIpF{&Fxlx!XD$x-r-~k^PU5|6h)nsgtpzg}t+doh|V{xrRn|F3w*`N&hMO
z-||26bha@2KbmZv{%h7>1DXEyFtIQ)GySjZzeD-|QF#>|ElmGv{wH66h5tXC{}1iI
zdia_CDgVDF^FNmUhx*r40eF6<|8<)Hyj&lZCK#9yn6#L%svG!uCR~oZ+WPY{@6lAf
z)#0BsbCJVVRtnV;M7TmJX;PZ{ggjDdX=>5HU&>~wBB`T597ddKtClF{#(dQpd({1zY
zm_{y8QRKJ)k>{Yx;|(2hIbC)8?R(=|%v(C_Flf;It?To#<3r<(=Mkj;by~nq|I>AO
zb@_AtcFsw6tWwVQPTfaF#iNesrk%Hfb>*@Ermj%c^p)O^RVJ8*>VUOTyih4x=|c_i
z;A>g*uN=gNsWB)1C8x~uai>q50aJa9
zy0Mn?j}^M;&rRD646FgY+E4X%hgB-0>Xse>pTS*i*Y`Kw7m6-#eS{5Vh8?94HT_~o
zjRT*sW9Y&O6|;o3fw)A=EZ&j?y|SYc$8)<~DbcgB&vz%8k1Eg($l;LwfhL)}^haXo
zTl!f?8R{F-VrC8E;5t5S5Nm`WmMNGoC_&)5v4>#+LIB1d!DY!tSB)#aGad7~9`r?w
zYdn5skL0Nrcz$yD^MNPGBf&Oep~|^P;X8`s$7WgRqHVRuctY(7Pn5nA5SLeQ*-mI!
zotsb@DPioL)hYp}Ky{@l)*N5A
z9=gI`i{Qyx)SU$KFTb6>-$$aCbt=0&CWqaK)-mZ2UkM9dRzH{wCK#{>C_5Py!!%vb
zIjL!Hf#rCnL`{O9evNjWMXGpmRjE`(zOoosHSrB)W;6u+bD;cx9Ek2RWTT70ascR6
zJW>Ssq`)@<4t-qkDRU;E4;dT5M9!8X)KJIN@5L5ZEo;qg@vyw!>nnm~7~DMNM-!Y2
z1$=zGO@{aje|Ffn{feVihXRqJ`HoT;?xsDt!KB!Qj}GaM(dSA~W4y*Y1-0pyiWe?3
zj`Pzjn_G{Rkef=atDdqo8RSa~2PRt9l`QQ5tEvlRiI5fY2)l0^1ROK5CcqD!A4rCY
z=8zaN^V?|6UXbGr;qRVB}sl5Ra)mTtT>vuPf5&laOp
ze$p*+8M`0dQ*qxoA10TDE31`DG%saSFYYv^P)s=h-@}KvECrMDyCf1?qt4d)4WJ0;
zF`T)t(#^X}eS%?tsm5iH`uJp5FdhhuPB4F{p
zp}X>jp^Kp;aOXt_*zJrEP
zx`bBzpMhSKWVpSs%jN&Ew(Q?sSU0h_$bU0AK)%9!DLUT;@X#&4Y=~g%WRw^UfD^nHIg0&ons3YN0u-p0N2)QoU
zYuoZinsh4va^m>;@LdKoHh}9ePsfta6b+G>>fl>_Cmf^_jb$b;Tz=R?K}v)nK!tx6
zU&RB?RzENJR3P^5>u^5sS^oi1O{A0y!Dcga@P=zKr2dHb9MW>(l_aNKS=X|`jR9Z2
zux}`y3AVHULw1(Wd>^5=Oy;{{ncyp
z{tO@+WJ{)faQVbwQ_)jDJ(y^0XA5xzdAs7Vd@NYw=xUJVz9HEMS?1Z#g|=Fyyya$R
zV|&W6^hT=gsY3jH1c4n~C|6i2vKg@t=V&T3pI~seXWME<_PZcDktmwofEAK
z?a^8!xH1>9Qi75Q?7=T>^(h5InCoe&!6t&=ZQM_+)098Z%NG%jb5+}?qVy0uB}*;U
z#<1X06}_MM1hJxeVD22864FNAPS0rJVfsHkE00Ox_%I}hFC@JgS)tw}^iQn(%V+)t
zJ`CKOCZ8aN-SsJjcElkYI<$*q;JX{(NY$xQ3nEv$?2Q&crNsWE#p!r{4Dq%VbCwt`
zeUL7x4obU4hw6TiafMOP*b#tWQLD`7@v&zQ-udaYpk_+)oWJogng1LXfqOUU>aIte
z20cv*L!GqZBj)ZhWyFs>ULpcrVgB(keXuEiXNYW)GCy`y+EWTI64tYZ&l@PZesWY}UOILXgsgLlk&ah()
z_Ni9?VjF<%Ve{M+-nU(6Kvq}2C=xdLa!460uj^X{TMA1}G$+5fhp+fW6h(>0j$k{T
zL#wnEDM>I%=S#ZB6~>d9&W@O!nkuEiA`d>n?z7*U2l3TW@D9_x9Ltj<$UMIi1GEY|
z?nQcpl!!7XhaKah%8taO!%#;(jViITX#C}BqVDm7nZ&SunJtAG#$@8@oQ>t9CF1Zy8okC`qtGc}{gSzI^PPld2RPYt@lY0U@>XO)sH^_eoV*9^F|?%mym`K+(q
zGYke=KD^0nkOQJMl9~bh$pH*#jAFbKq)pqU*#k*-(JV(afDFCrZ8Q}a%1qCJN1H6v
zR{he=a%BFbnYE-n%2@RFp9s2tFsz_&@g>i$yBgM*W)ne8fX+w*o&)*Y4voXowS=X$D-c%mH7RtFB0}M?j
z9=@=>Y(*9l7BAEXkllMqdeifepazql-{)_7uD3GVbbc;G_a1T5JXkM|DS^D~+DD_3
zLZXKU7K?AgfY|0c3ZE{og|ZJUeCgG6vu^MA?uHeXFtz~f$OF|RIEy9~O`S2;Hq*Ye
zP1p0+o@I#S=D(j`oh{rho4B8yL6c3p>6i$>QQnpK8$n|1JN{&E8&CkG`icI%8_U7*
zl3e6zXimrGMn3c8`IfhV^H90e^K|t}TAfCzlKGO}NCP15Q|o~l4aCOt$}=>(GmZKc
z1$-QPFVzk-;KV0dMQq~1$->S|_yJ|BEyuXh!;%9=8a4izjE3p;UO
zT@yFHV}Zi$gPr>q9@_VM51{n>&>&y>8ysr!izv&LS-sM)9B{`mTnnx_k8kA)b@M(5e^A;jajj#B+F+yfal;aX?
zWL${m_!$u=^IlVb#f0YYK-<7+bt0m}70dZ*I8IIjxHNEWF^n}T2JMDuYL7}7jr_n@XzC3E&P
z=sD9j)&{T(%8kWC6V8-rzq7-+;FdQ6WorM(o+vWdGAP@rf$V(u=?>bXP2On7G)fN>
zlHB{nXiO6aQ{~@GE;*6M-u+S}dgB@rX;CpSuLh`UT0Az;rnRv9%J;Im{I2pp$_tw)
zvXxK6RVJf@I0`xg%eIKdUS_fbn|85U0cKcEVIHB6TP4l3a^EbAUoj;gDEgR$i}i+x
zcF@Qm_!54F_L)
zCgC}76D~HbbiU0CQc)LP+#abA3)#i2eq*xYdcs0-SLg*hwWFOGc>$sqC#4Dg8j1zQ
z9qBp=9HncVi=W)a61n?EpO>Vmq{!@l@Op}1rZ-cV5XT`HuaH|OABK_Y)8NLohwqwP
z*2@rD;;We_(AH6y0Gx8v!YgVdUE~Wn?f4%W{oyQZL9QOU*dbRtQFVi$V+Mh{_Bc>3oX
zvdM(I>#tb<^6__V-ua~Siz`&TE^aFd@l@cJ6lfqxKuf;ati;FeQixOC1CsL{i)NVh
z2EH%*A+Ehbs-S)S9c0TJzt{0vo?e997edrf=RI__f+!g;W5@*cnf`8!Zzoiu$Ehu?
z<0E71>VS?O>w^-}+|i6r83P!bk4f>0
zDp%=B#J2{3c+BPEK%+$8eh|7Vw(E9z246!p*+~EqYSYkusQ%At;-gzzfZa@V}Q$
zH*o&$gQMzn`W{Ttt1V?+OMT1-iyMse10c$PWS6Dalm5lKQJnJ6jqO#?S5*9gALNu|
zTL}G+X-zBly_MVlLPGgduKaT~eo7NVHy8OQ*U+8kK!HJ?Lr0!#XTMFM=lg+0;b-UU`ZQ^@;j)cSx&n
z6|@jB|EN@V93jusj6qEkH1I2=cHfue5iRdH(02=h)mL~Yk|J5Q43Q<8<^$V7f;(}u
zIFb~NBJrHL>r1oKR4Am13sNCGCxgZ|T>sYNX6jp{Tb;VAPx;Ubfy`z*`=hlZLt&QI
z;(66flnlqIp10_+D3lWcyu52q3wRBLynPLibYA2Fn@7+ysk4BY1A82s-vTw#5_wv{
zh3K_7j`a9O-QRqnS!;O}N?5oLW5V4S=gp5LFh34g<
z*i`xC^wnBsl5A-z3L`_>oJJ|ip)E}^2dW4w2dT=i2=~$#kG0k4vn%!_nG`b_oF{DQ
zI3ZO9=s2kGOC~ev5ZD>20zzavOoj10rZ<5WEe2v3Qn=;orqfz$q5z9p?Yx>4>S2t_
z>`3}Mb!?Fo7WEX{DoKbB@wjWEA47k1;ItkU}Y&P2DM_=m*VA
znTrJk-Fu{>q&(3)obkN{&JhtK`~LYwKtol#OI4wr+KA-esk8v5ivhu$zXM0|CAIu3
z`oi>t>nrsc%WrBzNt;edas}Op{ZZkLYW~|IZXDm_6Fnh6ad`5v0ojs@z^-hoC5QkN
zh(D^BN%n++=?RVrAd=t8u&Y0P?c5d^sjt0{A?~<#TMQ84dN$Fisw#
z)c4hpYjL7R1NrRtsYyknv~Z@-;Z)DV;UgZk4nK@zhR5u7_I5m>6zPrjH1*?|*1YW;
zT7aj+6_~vNr`+FU-*!(Y!F{XDvigYf<2S1UDGT_mlk{CRC38VpDUMU2iND6>+C($P
zD$C?vDQdr>&*Ea(7e{_8(|1Hr1h_f4CTi)2lhF5(Aqv%qACk1t9~zkRH6p+I*e3m3RN-x+qotD#Ec|Sec5b@=)v`6Pq@~ta
zPyUW?=416|k@G|TXF{~H8u9ZaTedNvEW7!FdG3&!St>>{Cj9pAq$INLmoKTyh}B}dkm(S#8v_k!y}$f1`%
z4Xm8mI5oqlJEi_e2MIg&YrOhE!&E5X*?9@$gI2cNiX`bCED8%-Rm@}6+(whMG}ARl
zPfhLxU?E$2Yenud{%##CWl5hx;oujwpoIaFH+a|S1Biy%Nt9-%Wn)Q*$KwIH*F090
zhtF6aQq>-)QcZIV6~B*bcgVc3lzWW|@uPTA(XIow?PZ%4q
z%2Z@F&YZ)GN~Ljfw?aV-?i7Yw$R~J^RI2&UK>t9@R;2|(1diOv-kWt(?FZ{IyXKYp
zj6H%QhNq<5XY!7ue{j;Z&Y@7Jos554)IntVsUf@aE$Rdl+rMB3_0T(Rj)=@ldgTaU1-PI$kQCj3yfdl
zX3*|K**9%Q(RrzS^kLsuXsX}vtCL*_X3fYTw=^v7eG*gL&p<>@F$w~YO
zmiUFk$kzP(${~|8)PIU2vz|U=rs7*gJ)JY()I--xyt3}uWNWN)wgvH7Qb$tLZ>c@K
z$t`$y(b6KM(+LFa5>*hEPwqs>R^Pnb(Jn@NAO=XaPwc!r-KKN$U?kGPdf
zbSJY!W*mcPK9>qpQeOW=H5hwKPB
z8j}yOlVTj`A$X1fQlWzZXygHzbM)9gU-uAs;)9h7u%GSHw^lEY`fyK)Kb`7RDANMs
z<|oL8`uAz797LW8dM%MGu2es&UPLp*Pzt|0bu*=jF1KaB6#p@%{=A&?V;}0RA*)0V
zRY+1LQNs*XRW0*NrP}NcX0Po4jzm4*B7NL5mV%#f&4nd5vqPo+mG4hp6$|=;q{R;9
zf3Drh*R}nb{V&w|u4!@RHan=@_ItvWyB<)+;jePBr2r`?Gr=;N%CWJJMtWIE--_CR
z?{B{)J+ZmV-?=JfgJTuFER^CFWMn?vj&_~0woK4{*p_X_L$a%99I2pay}LcLUT`28
z#vg(z+zOZP7PzzcLI>d~=-KG_K!k7Q9KiDl-t(;{VknYO3PIXCSwtME_-NP#ArhV3
z-|r9)U{K>(1!_fKqoBTNTB9ot7~m!42SAFWqE9BfQABoOAvJc*#GwPMS!b=%k{H7m&h0AmB-a
z)qkIaRYGwrsTQDdzh($8VwqZ2Dvd(Qqe&8ca*~5bn}fBGeOF<5q1VP#Ur@mqEm5yJ
zB1o~t70`E!xMPMoj(qb8?^dk3Dzmgb;JK=2fBh*V+K4%iybtOyrF#f`9~bIC>ySGc
z%l`yNub6tqG?}PPgOL|d1-pMEc0N=bCue#*3#Fd+ayTv
z`)H(s@^>H}FgmTdcY%3GX`-eh=FPRe!adupF`R>6aKT!%NUd=FtPZ<$Bzdv|YIgHH
zb&M5-WT)=U8pdIjWV?uo;Qn&}T-aRr$9f1;7}*;qfbVVd~Yjb=$__y6SelmPu5=_0(8ZXKDiRi|5
zdUhZ6S_@_R%6<5YCcP}wsmg$i*!6~r$!x0-PCUc1MnrCks
zv(=uF2%1CXGJ^{6JZFB)rV`lMGOv~wej8yYy*Yw;6|`>krCRCDH!)Zr6f5AOsP+Nz
zKj$DF9!bquOK2m)8Qcr4l2bzPtLFml)jz^I0`b*aD%*-9Ur^C!%Y5b;8;O-{F4VCU
z^e3J7p`&zruh4(C6@~a7GtpNA)qj}vQ1Pqt;z$Vl^$RsdA6*%=?I}e+%{;(mJO(U`
z@}+qzNvz5{n(oenol_H}&RyoYi;y&?zzgXM3Y*^5oHTs*?v!loLzda{=#)m9k`N+)
z4iY(<_B4vS{wm0njL&OFpzlQ*^)VT}m-$uExL-f}O>$U$=hQVgAd}m4e%mRgUXGVe
zmkiK>j={SjvT>!RGJc9L#~{|nKmH9Z;E?TP2Jnfn0;y9}Zb(YpS5PFC<8$}GvbwFq
zNwGH2Q1fyfag_Ha{A@h_0vpqu#WnUz(Knh#?%o`g9#LfZ$V-==5g4+e7NeVe&3p15
zK}pD}m5b_ptFM5Dc;KEzaTMc}JJEyj=||LTczWH7!9dJS|D0~7dD%%7H{xP<7>^)I
zU0%fUM|Dh!-5-uQsJFr=16q_ib$WX>XgzN;bdtq{>%-pmhF$KbjQ2K=4fLMX-R4mM
z0=3I$ti)0Oak5c_5hs*a%2&d(+YOGO%&DDQ(+M?6vY88K(;|gmqb1bcdBRlVo;X&9
zNg>1;Vy7PIeHSk$0V$<9W|W0e(WLbmM`6JC!HEU7vx`)G5b=ig4@alH;K)BZY@CK(U6d>b
zdKG9;vuiXy*3ExM2|wcpW*Fka*d-bAW&wd$@ExBy0bR0;O@5Jlfu8|K?KpOQKr^@b
zpmcGKPzZ3E!qzt>Xa)PZ;*t%UKk6#<*V&Du5;Nx
zA9YZv3$mKw-rqRD+C@$OL`XfOc{2grFr|BtjI3Gb$w65=(n#pv+IU`2h&mVEsO~af
zHZo;P7xnEJv*E#0R(%!=8l+_yI_%vtj#89ey|Rl7_FRFB)jecJ>v9o~{ERnGqq@4g
zW-M7)ll8IKwQPcvY-Hh3yml=3?!iD$5>PX0->A91T9`z9zv|F=czdD#t(g+RQXX4mYfyZCoSLKQVC@}eo0g;HR(CV-
zHnuI#eljz6J%P49=h$ra_}^R;Y>`}`(%wR`g9FQ`59CLUz{Ax7v)6)^=T7-JeAKs<#@1d-xfDTp+K%1i`M7s
zC>D_YW~)q_kk)-HVhRYuO=AL?lD~V*FHt=8eCOwX$pAjXpt6i-+6kG_=5z#v(U@;w
zKq-ZrUosSddt<{1!d`7k)nqi(Er^5Oc21jw7-6U{#v#H`q*GDT(^sppY}mP
zGDQElNbtArr%Y;~ADeOq#d0&qe0%W1evt97c?u3gI1;{j(*Fcu!R>OZk#Gx8>f-jums%hwTb?+#+)`5zzciQxV6B
zLMrcaivNihmdX`h<|23;eVFdL#x&gD^VvAkE$0j;;pyw4b3$dq^q
zEp3?`eoPbdM~%Y`uq>y-vCfJKhC;VWOH6@8C
z8;)ssop-~qTF`7#IA3q|H7vozpz)~0or{-{hkjBrh`EI8MbY<9h8*T7+FiQ(t;sw@
zpig_xcUv>FqoQ}{C2zoc>d?Yh60m}~X6%>h`=*`rm{jd3M|t0ZDDg;inApt7Z(Kc%
zD8@tlCY25un17-H@z+<{d$X_syTV@QntW1g=J|B3(JYDbkr(@J|BXpFNE?@6KhTz?#@JptZUKxE86(k$8Iz3x4sM%2%7SF#wTNV?nm(G5
z_=Ehz6c#*e{Obzu-p5IxPngB1hC*2txUxKX@_
zsBnf9W^epasP-0hYAb!@8Rn=3dA7Y%piO^sCVMKiDQghL-_<$DVdUL%tn0AdlAk~|
zlP60IwglQTI4GRp!tqv8U397b$Kzn|9pdqyd>9m-`Y8MQwmXjk;gLnLMJZsh&xh9m
z#c=rCt8MB^{B3)Co!k!=s?9omy;y38hl)EUc^vv()VJ`@LLvTs{7
zkXYP4^9-7&O;XBy9ek&9^LHp7dR-L?9}`@IaCS%<4t)_j#6i9VY4p-}^ag?lKhnDQ
z4c0zpPf8{15M^~_pveQ#VPXI
znanL$`g~T19yg=M9)wMz3d><9S+dJsp^3P|<~|@`71VD8W}Wxp=?zPoQ>5+dcwZEf
zo(wK!3B6m41o$@Fm<-5?c!@EH1tN%gIh!##pKcK5-k6YnffrZo^wL)86JOjQu*2iKhU<1_`MyLzJ0Mhp
z@&Mmck7x31Ki_u}{E$0!#9TCwueFFuwzQB3y^o)72TK#wO^5Aw6P5bA6~_oKN%%4_
zy%75RhMI)1j-iwe3<6w6YwtT+A+yiCz+FT93ry-_RPUh{W|u{Rags62y@B@@Au`m!
zvi=4?D*}RuDaY+%Jph7(`1|};uC0gy9yVu0
zgq?kpG*aZ%(Pk{Klz7BCQObx)_Ft8AA#v0}2GNJ^wP&2|Ci!o2IH35q(_X8JNlKzz
z7Zu#Z4-}upmknn_1&n7Mtard^_5561qg%2GB_SR-q0+>X_vj+OhdxbqSh_3cf$ew^
zV~EpQ_MxZ?+9R1EOKAA@at-%=^<8^OLZ;DTRugJY-KXS5O$fD+mx7B4?}mHo@Mh2q
z_7|n!gRq}|Xf*V*J$`})mS
zD8Zqx!41l^|p-zM?_G(y+!E47S&|e
zy_R};qC(T5=y2R^sEyjheD}@tnXYaIfO4QSYGKTv81=Eg&hE8V9ueaMGCmnBGR(so
zdA@rIOmHIsv;8;(wPBp`KWC{KuHj%;ksQ!5lV6A0O(k&%AZ5jR*q#doA8Z%JEVJDS
z7lCbtU4{>BWduZx%ML_T?0=}Hj%HiArpL<2&y1@W?aer)@dQu0$ltj~y~nqHGdbeU
zi*Ef~>gn|pGAbHFbY=*b0E*?XDU7?@%=4s%Q5KcqA&MB;Ap@)E2}sdLO#N&m3DLu=
zidUuUEVP7R>D#X7)klH1xV?~8*@Mn|t^F&+_#KA5DJ)Yltz{I}eMIKpl%A3gwa@$8
z264h-x?>l29Q1C5hV?~|uI8&Zo(La4w$2%dQ^=tBLlZ8)<%jMo{L(shCmqRlW9n>*=779-1qDtZXSp<&ux)jgEMdD}u)_7Ap9M3X_ij{?Gc;$OIes{U&
ziO3Y#RCh2#Gnl!hvP(?cx8vq+&fW=G@};Ujk{BS~U>(x0eLGyT}vo=VMHK|Py}VHqR<
z-Yisa94&~D3;5Qvr2-O>RX6D|e2DgmhJ>D04O6*_Oug+oyBK1zj_}+Jz08)dU~Mj$
zKP$`7+1xyJ-DZXCr5Lh(rUp#hP+#M7$g(=KuW1~J=G%Xb1PS0pcX@IC-UkZhbXRQe
zNV9&{c!@_bVD5C%Z+5MzgRHcLj?p9iuJy~C9|F1k#S$&*aX#t|_rGe%&f*8#48qFdMgogo%5KF}KI
zUIkH-oL<$vc+jRk#@EG5GmE_CDo&Nh3xGPgT6sze=1H
z^!X*y`3MUh7)!{`QI7%cNa|ct5eQ$>@;F@m)AC_-qWx!L*Rb%z9Kl{n65Jms0h-9)
z#vsH29W#tC?S}Sy*nUv%q@}BVYkC7(v^VTkYfV8;(Fz)8w)qPwo=MZv+vTbciYd2~
z52b3->HJwRmH9AI&y<0iBZRRck4(MUPmBalHXnT2Ld=>eAf<{{0K5m?7Eu5=Yc|Jw
zBIu6`yyI{ojRC8l
zx4ma$4~5Q+hMNizZBRJ1Q(kdNg`NFy9w2m2x=?_z*(Ly?*U0I&E>U4~`+}HR$B87b
zFr47yA$j`+JD8_GhEnB#s&Rk4hEDS;U&*)dZl-bWaCm)+-3+Ce>$Nf;pEg0rdfapW
zy@4$c8%x$}?*Wi<|7NuI+^2iZBm(0`uo7%~SACQo1Ngws)Ho)%ehH-N^7!A4x)UGA
z>=DC~OU`4=5sN~h(przWHlmIizNusX4&rS
zrpQT|WnwGTwA^xkB^|jrgDF1l_{Ce@blL*>)&*{l$SUGdfHX_@EIe(EcMhj+hx3Wc
zY8wdGPcHHC+U9nb^*TB~pkM8w{Z(M`eU7VI_SMC1NVJZKSJbX&Nq-SQESx}!Dynzp
z<32=TOON%sv%LYK=PpgT<~G_$f5<4N@f{3(dzP8fE!PrukQ)K*rjWBhH-!cv#yOf%
zZMqu&y_ad&v70p+S8AB;E}!)cg*6H&A5WdFW|Z%e;gAr|+=Uw|Baf7lvrvm#yexw`
zvoks6N`dVkOs-!mCuuZ}0kH#%32$6;X1aVgSMH_#d58%_@t?`1h648SZeB#?Q6lEt
zx5OIpikI4a>~Xfv^8Xf4^qz7HI2$ucsZdx|K?;79UWjucT8c%CsB$>==zCB%vPqPr
zbdyd{u%WN$V|gmM3Y$<5cUK<6cE|3C!N;d%;~w|MQWnqu)lSIDYKrPi%6BWHfFcVo
z+E{(BXlQp2(1Row@^$=rnXWsLI(L4G5
zH|uJxsM!zRD^dpiFJ*3tVKg4>Cjse#_=Jm4eU}bj;%M~Dd|CM>_dyPBF@y*1@hF54
z(df^5y@L3|>o003o3r=j0GP|B63F`cc#V4Z{am6A^AX`kYl99#F*gIzX$!hG>X{9S
z=MjkD7%e4n#Xl4|TOK^%qojHV`JA@|Z?jlpKTw+v`qgp&=tCg$3yXwC3-#QndFUK+
z8Ukj+!R^kbHEEVy-hHM`z67hl{nq6efW^1ewH1(<_+xuLp#Qe_?N91o
zc$fX?GWFRmBjFRd@jpl_GL^L|#Hu0>G7uwerr0R5?1v5<7jegH~JL+Gl
z-}Xj>kxW-fb^^25T2Rr;+B^Ib1QNqma!c8E_`CN*_bK!N|1fnz4;!I0mET6}AX-2Y
znkbAtLAhTN|CG4T={Gv@_n=VwGz2GNE(pK
zn41+xjr$oDE!xH@jCz!TA=OM}m@zEIA@C+{W(D(mt)1n-u)i)XETcZ
zQa67pwpwYCG10ZnDO;JM&+*8`D