Skip to content

Commit

Permalink
images
Browse files Browse the repository at this point in the history
  • Loading branch information
herveleclerc committed Sep 13, 2024
1 parent 7fe2dc3 commit a9e6de0
Show file tree
Hide file tree
Showing 11 changed files with 107 additions and 19 deletions.
64 changes: 57 additions & 7 deletions cours/containers/kubernetes/k8s-architecture.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,26 @@
### Kubernetes : Composants

- Kubernetes est écrit en Go, compilé statiquement.

- Un ensemble de binaires sans dépendances

- Faciles à conteneuriser et à packager

- Peut se déployer uniquement avec des conteneurs sans dépendance d'OS
- k3d, kind, minikube, docker...

- k3d, kind, minikube, docker...

### Kubernetes : Les noeuds (Nodes)

- Les noeuds qui exécutent les conteneurs sont composés de
- Un "container Engine" (Docker, CRI-O, containerd...)
- Une "kubelet" (node agent)
- Un kube-proxy (un composant réseau nécessaire mais pas suffisant)
- Ancien non des noeuds : **Minions**
- Les noeuds qui exécutent les conteneurs sont embarquent :

- Un "container Engine" (Docker, CRI-O, containerd...)

- Une "kubelet" (node agent)

- Un kube-proxy (un composant réseau nécessaire mais pas suffisant)

- Ancien nom des noeuds : **Minions**


### Kubernetes : Architecture
Expand All @@ -26,13 +34,24 @@
### Kubernetes : Composants du Control Plane

- `etcd`: magasin de données clé-valeur open source cohérent et distribué

- `kube-apiserver` : L'API Server est un composant qui expose l'API Kubernetes, l'API server qui permet la configuration d'objets Kubernetes (Pod, Service, Deployment, etc.)

- core services :
- `kube-proxy` : Permet le forwarding TCP/UDP et le load balancing entre les services et les backends (Pods)

- `kube-scheduler` : Implémente les fonctionnalités de scheduling

- `kube-controller-manager` : Responsable de l'état du cluster, boucle infinie qui régule l'état du cluster afin d'atteindre un état désiré

- `kube-cloud-controller-manager` : Est un composant important du plan de contrôle (control plane) de Kubernetes, spécifiquement conçu pour interagir avec l'infrastructure cloud sous-jacente

- `kube-proxy` : Permet le forwarding TCP/UDP et le load balancing entre les services et les backends (Pods)


- Le control plane est aussi appelé "Master"

![](images//kubernetes/control-plane.webp){height="100px"}

### Kubernetes : `etcd`

- Site : <https://etcd.io>
Expand All @@ -42,6 +61,9 @@
- Point sensible (stateful) d'un cluster Kubernetes
- Projet intégré à la CNCF (<https://github.com/etcd-io>)


![](images//kubernetes/etcd.svg){height="100px"}

### Kubernetes : `kube-apiserver`

Sans le `kube-apiserver` le cluster ne sert à rien. De plus, il est `LE SEUL` à interagir avec le cluster `etcd`, que ce soit en écriture ou en lecture.
Expand All @@ -58,6 +80,9 @@ Sans le `kube-apiserver` le cluster ne sert à rien. De plus, il est `LE SEUL`
- Intéragit avec le kube-scheduler, le controller-manager, le kubelet, etc...
- C'est une API donc utilisable via des composants externes (kubectl, curl, lens, ...)

![](images//kubernetes/kube-api-server-ezgif.com-crop.gif){height="150px"}


### Kubernetes : `kube-scheduler`

Le kube-scheduler est le composant responsable d'assigner les pods aux nœuds "worker" du cluster. Il choisit alors selon les contraintes qui lui sont imposées un nœud sur lequel les pods peuvent être démarrés et exécutés.
Expand All @@ -66,6 +91,9 @@ Le kube-scheduler est le composant responsable d'assigner les pods aux nœuds "w
- En fonction de règles implicites (CPU, RAM, stockage disponible, etc.)
- En fonction de règles explicites (règles d'affinité et anti-affinité, labels, etc.)

![](images//kubernetes/kubescheduler.png){height="200px"}



### Kubernetes : `kube-controller-manager`

Expand All @@ -80,6 +108,28 @@ Le kube-controller-manager exécute et fait tourner les processus de contrôle d
- Endpoints Controller : fait en sorte de joindre correctement les services et les pods
- Service Account & Token Controllers : Gestion des comptes et des tokens d'accès à l'API pour l'accès aux `namespaces` Kubernetes


![](images//kubernetes/control-loop.svg){height="150px"}




### Kubernetes : `kube-cloud-controller-manager`

- Fonction principale :

- Le CCM agit comme une interface entre Kubernetes et le fournisseur de cloud spécifique (comme AWS, Google Cloud, Azure, etc.). Il permet à Kubernetes de gérer les ressources spécifiques au cloud de manière indépendante du reste du cluster.

- Séparation des responsabilités :
- Avant l'introduction du CCM, le contrôleur de nœud (node controller), le contrôleur de route (route controller) et le contrôleur de service (service controller) étaient intégrés au contrôleur de gestion Kubernetes (kube-controller-manager). Le CCM a extrait ces fonctionnalités spécifiques au cloud pour les gérer séparément.
- Contrôleurs spécifiques au cloud : Le CCM implémente plusieurs contrôleurs qui interagissent avec l'API du fournisseur de cloud :
- Node Controller : Vérifie si les nœuds ont été supprimés dans le cloud après avoir cessé de répondre.
- Route Controller : Configure les routes dans l'infrastructure cloud pour que les pods sur différents nœuds puissent communiquer.
- Service Controller : Crée, met à jour et supprime les load balancers du cloud.

![](images//kubernetes/Kubernetes-Architecture-Diagram-Explained.png){height="250px"}


### Kubernetes : `kube-proxy`

Le kube-proxy maintient les règles réseau sur les nœuds. Ces règles permettent la communication vers les pods depuis l'intérieur ou l'extérieur de votre cluster.
Expand Down
32 changes: 23 additions & 9 deletions cours/containers/kubernetes/k8s-governance.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,26 +71,40 @@
### OCI

- Créé sous la Linux Fondation
- But : Créer un standard Open Source concernant la manière de "runner" et le format des conteneurs et images
- Non lié à des produits
- Non lié à des COE
- **Standardisation** : Le but principal de l'OCI est de créer des standards ouverts pour les formats de conteneurs et leurs runtimes. Cela permet d'assurer l'interopérabilité entre différentes plateformes et outils.
- **Portabilité** : En établissant des spécifications communes, l'OCI vise à rendre les conteneurs portables entre différents environnements d'exécution, clouds et systèmes d'exploitation.
- **Compatibilité** : L'initiative cherche à garantir que les conteneurs créés selon ses spécifications fonctionneront de manière cohérente, quel que soit l'outil utilisé pour les créer ou les exécuter.
- **Innovation** : Tout en maintenant des standards, l'OCI encourage l'innovation dans l'écosystème des conteneurs en fournissant une base commune sur laquelle les entreprises et les développeurs peuvent construire.
- **Sécurité** : L'OCI travaille également sur des spécifications liées à la sécurité des conteneurs, visant à améliorer la sécurité globale de l'écosystème.
- **Collaboration** **industrielle** : L'initiative favorise la collaboration entre de nombreuses entreprises et acteurs majeurs du secteur technologique pour définir ces standards.

- runC a été donné par Docker à l'OCI comme implémentions de base

![](images/docker/oci.png){height="100px"}

### Kubernetes : Projet

- Docs : <https://kubernetes.io/docs/>
- Slack : <http://slack.k8s.io/>
- Discuss : <https://discuss.kubernetes.io>
- Stack Overflow : <https://stackoverflow.com/questions/tagged/kubernetes>
- Serverfault <https://stackoverflow.com/questions/tagged/kubernetes>
De nombreuses sources d'informations et de contributions disponibles :


- **Docs** : <https://kubernetes.io/docs/>

- **Slack** : <http://slack.k8s.io/>

- **Discuss** : <https://discuss.kubernetes.io>

- **Stack Overflow** : <https://stackoverflow.com/questions/tagged/kubernetes>

- **Serverfault** <https://stackoverflow.com/questions/tagged/kubernetes>

### Kubernetes : Projet (suite)

- Hébergé sur Github : <https://github.com/kubernetes/kubernetes> :

- Issues : <https://github.com/kubernetes/kubernetes/issues>

- Pull Requests <https://github.com/kubernetes/kubernetes/pulls>

- Releases : <https://github.com/kubernetes/kubernetes/releases>

- Projets en incubation :
Expand Down Expand Up @@ -159,7 +173,7 @@
- Contributor and community guide : <https://github.com/kubernetes/community/blob/master/README.md#kubernetes-community>
- Décomposée en [Special Interest Groups] : <https://github.com/kubernetes/community/blob/master/sig-list.md>

- Les SIG (Special Interest Groups) sont une partie essentielle de la structure organisationnelle de la communauté Kubernetes. Ils jouent un rôle crucial dans le développement et la maintenance de différents aspects de Kubernetes.
- Les **SIG** (Special Interest Groups) sont une partie essentielle de la structure organisationnelle de la communauté Kubernetes. Ils jouent un rôle crucial dans le développement et la maintenance de différents aspects de Kubernetes.


| SIG | Description |
Expand Down
8 changes: 5 additions & 3 deletions cours/intro-awcc.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
### Supports de cours réalisés par alter way Cloud Consulting


les Labs sont içi : (https://liascript.github.io/course/?https://raw.githubusercontent.com/alterway/formations/main/labs/liascript/labs-k8s.md)

<https://cloud-consulting.alterway.fr>
les labs sont içi : <https://liascript.github.io/course/?https://raw.githubusercontent.com/alterway/formations/main/labs/liascript/labs-k8s.md>


Les cours sont maintenus et donnés par : <https://cloud-consulting.alterway.fr>

![](images/logo-awcc.jpg){height="100px"}

- Copyright © 2014 - 2024 alter way Cloud Consulting
- Copyright © 2014 - 2024 Alter Way Cloud Consulting
- Licence : [Creative Commons BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.fr)
- Sources : <https://github.com/alterway/formations/>
- PDF : <https://alterway.fr/formations/pdf>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions images/kubernetes/control-loop.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/kubernetes/control-plane.webp
Binary file not shown.
Loading

0 comments on commit a9e6de0

Please sign in to comment.