Save tuto corrections

This commit is contained in:
nemunaire 2022-02-24 20:43:43 +01:00
commit 10448a6c8d
115 changed files with 1423 additions and 1289 deletions

View file

@ -1,16 +1,16 @@
\newpage
Vue d'ensemble de Kubernetes
============================
----------------------------
*Kubernetes* est un système open source d'orchestration et de gestion de
*Kubernetes* (prononcé
Ku-ber-né-tice](https://github.com/kubernetes/kubernetes/issues/44308) en grec)
est un système open source d'orchestration et de gestion de
conteneurs. C'est-à-dire qu'il se charge de coller constamment aux
spécifications qu'on lui aura demandées.
Ce projet est l'aboutissement de plus d'une dizaine d'années d'expérience de
gestion de conteneurs applicatifs chez Google (rappelons que c'est eux qui ont
poussé de nombreuses technologies dans le noyau Linux, notamment les
*cgroups*, ...).
Ce projet est l'aboutissement de plus d'une dizaine d'années
d'expérience de gestion de conteneurs applicatifs chez Google
(rappelons que c'est eux qui ont poussé de nombreuses technologies
dans le noyau Linux, notamment les *cgroups*, ...).
Dans Kubernetes, il n'est pas question d'indiquer comment lancer ses
conteneurs, ni même quels *cgroups* utiliser. On va fournir à l'orchestrateur
@ -18,23 +18,22 @@ des informations, des *spécifications*, qui vont altérer l'état du cluster. E
c'est en cherchant à être constamment dans l'état qu'on lui a décrit, qu'il va
s'adapter pour répondre aux besoins.
Par exemple, on ne va pas lui expliquer comment lancer des conteneurs ou
récupérer des images ; mais on va lui demander d'avoir 5 conteneurs `youp0m`
lancés, de placer ces conteneurs derrière un load-balancer ; on pourra
également lui demander d'adapter la charge pour absorber les pics de trafic
(par exemple lors du Black Friday sur une boutique), mais également, il pourra
gérer les mises à jour des conteneurs selon différentes méthodes, ...
Par exemple, on ne va pas lui expliquer comment lancer des conteneurs
ou récupérer des images ; mais on va lui demander d'avoir 5 conteneurs
`youp0m` lancés, de placer ces conteneurs derrière un load-balancer ;
on pourra également lui demander d'adapter la charge pour absorber les
pics de trafic (par exemple lors du Black Friday sur une boutique),
mais également, on pourra gérer les mises à jour des conteneurs selon
différentes méthodes ...
Architecture de Kubernetes
--------------------------
### Architecture de Kubernetes
![Architecture de Kubernetes](k8s-archi.png)
Un cluster Kubernetes est composé d'un (ou plusieurs) nœuds *master*, et d'une
série de *workers*.
Un cluster Kubernetes est composé dun (ou plusieurs) nœuds *master*, et dune série de *workers*.
Sur le(s) *master(s)*, on retrouve les composants suivants :
Sur le(s) *master(s)*, on retrouve les composants suivants :
API HTTP
: On distingue plusieurs API, elles sont toutes utilisées pour communiquer avec
@ -56,7 +55,7 @@ Le contrôleur
Chaque nœud (généralement, le nœud *master* est également *worker*) est utilisé
via deux composants :
via deux composants :
`kubelet`
: C'est l'agent qui va se charger de créer les conteneurs et les manager, afin
@ -72,19 +71,18 @@ effectivement se charger de lancer les conteneurs demandés par `kubelet`.
Évidemment, chaque élément de l'architecture est malléable à souhait, c'est la
raison pour laquelle il peut être très difficile de mettre en place une
architecture Kubernetes : avec ou sans haute-disponibilité, un nœud master
architecture Kubernetes : avec ou sans haute-disponibilité, un nœud master
dédié au contrôle, avec un moteur de conteneur exotique (`rkt`, `ctr`, ...).
*Resources*
-----------
### *Resources*
Avec Docker, nous avons eu l'habitude de travailler avec des objets (images,
containers, networks, volumes, secrets, ...). Au sein de Kubernetes, cela
s'appelle des *resources* et elles sont très nombreuses.
Parmi les plus courantes, citons les types (désignés *Kind* dans l'API, rien à
voir avec le projet `kind` au début du sujet) suivants :
voir avec le projet `kind` au début du sujet) suivants :
node
: il s'agit d'une machine de notre cluster (elle peut être physique ou
@ -109,12 +107,11 @@ secret
: comme `docker secret`, il s'agit d'un moyen de passer des données sensibles à
un conteneur.
Pour voir la liste complète des *resources*, on utilise : `kubectl
Pour voir la liste complète des *resources*, on utilise : `kubectl
api-resources`.
Modèle réseau
-------------
### Modèle réseau
Pour Kubernetes, il n'y a qu'un seul gros réseau au sein duquel se retrouve
tous les conteneurs. Il ne doit pas y avoir de NAT, que ce soit entre les
@ -135,8 +132,9 @@ loisir d'allouer l'adresse IP, d'ajouter les interfaces réseaux adéquates, de
configurer les routes, les règles de pare-feu, ...
Pour aller plus loin
--------------------
### Pour aller plus loin
* [Kubernetes Documentation](https://kubernetes.io/docs/)
* [A Reference Architecture for Deploying WSO2 Middleware on Kubernetes](https://medium.com/containermind/a-reference-architecture-for-deploying-wso2-middleware-on-kubernetes-d4dee7601e8e)
* La documentation de Kubernetes : <https://kubernetes.io/docs/>
* A Reference Architecture for Deploying WSO2 Middleware on Kubernetes :\
<https://medium.com/containermind/a-reference-architecture-for-deploying-wso2-middleware-on-kubernetes-d4dee7601e8e>
* Les spécifications CNI : <https://github.com/containernetworking/cni/blob/master/SPEC.md#network-configuration>