diff --git a/formation-kubernetes/index.html b/formation-kubernetes/index.html index 3d82b08..9f627ad 100644 --- a/formation-kubernetes/index.html +++ b/formation-kubernetes/index.html @@ -5,12 +5,12 @@

Speaker à Java One, Devoxx, GDG, JUG, GWTCon…​

Rappel

Processus (et programme en général) :

-

Operating System

L’OS gère les resources de la machine et l’exécution des processus

-

Les processus voient et partagent les resources

+

Operating System

L’OS gère les ressources de la machine et l’exécution des processus

+

Les processus voient et partagent les ressources

Environnement

Le programme a tout un tas de dépendances implicites :

Le lancement réussi d’un programme dépend donc d’un environnement adéquat

-

CHROOT

Change le répertoire racine d’un processus

Isolation de l’execution du processus

A partir de là il est possible de construire l’environnement FS adequat

Exemple

Pour commencer sous Docker :

+

CHROOT

Change le répertoire racine d’un processus

Isolation de l’exécution du processus

A partir de là il est possible de construire l’environnement FS adéquat

Exemple

Pour commencer sous Docker :

docker run -it ubuntu
 apt update

Sinon :

@@ -61,17 +61,17 @@

Gérer des clusters de machines

Déployer, maintenir et scaler des applications. Conçu pour être extensible et adaptable.

Abbréviations : kube, k8s,…​

-

Vision à grosse maille :

  • description déclarative des déploiements

  • placement automatique des containers en fonction des contraintes et prérequis déclarés par l’application

  • gestion des failles (les containers redémarrent automatiquement)

  • mise à l’échelle horizontale

  • découverte de services et load balancing

  • mises à jour en rollout et rollback

  • stockage

  • gestion de la configuration applicative

  • auto-healing

Ecosystème :

docker compose

+

Vision à grosse maille :

  • description déclarative des déploiements

  • placement automatique des containers en fonction des contraintes et pré-requis déclarés par l’application

  • gestion des failles (les containers redémarrent automatiquement)

  • mise à l’échelle horizontale

  • découverte de services et load balancing

  • mises à jour en rollout et rollback

  • stockage

  • gestion de la configuration applicative

  • auto-healing

Ecosystème :

docker compose

docker swarm

mesos/marathon

-

Environnement de développement

Kubernetes met à disposition un outil kubectl

Kubernetes est platforme-agnostique et s’intègre avec différents plateformes comme par exemple :

  • AWS,

  • GCP,

  • OpenShift,

  • Minikube…​

Aujourd’hui kubernetes se fonde sur un environnement GNU/Linux.

Pour GCP, outil gcloud est utilisé pour provisionner les resources.

TP 0 : prise en main

tp-0.html[Aller au TP 0]

-

Que s’est-il passé ?

Débrief du TP en passant en revue les resources créées pour l’occasion :

+

Environnement de développement

Kubernetes met à disposition un outil kubectl

Kubernetes est platforme-agnostique et s’intègre avec différents plateformes comme par exemple :

  • AWS,

  • GCP,

  • OpenShift,

  • Minikube…​

Aujourd’hui kubernetes se fonde sur un environnement GNU/Linux.

Pour GCP, outil gcloud est utilisé pour provisionner les resources.

TP 0 : prise en main

+

Que s’est-il passé ?

Débrief du TP en passant en revue les ressources créées pour l’occasion :

  • kubectl get deployment,…​

Vue d’ensemble

Le développeur utilise l’API k8s (souvent avec kubectl) pour décrire l’état désiré du cluster -(applications à exécuter, quels conteneurs utiliser, nombre de réplicas, -les resources réseau et disque etc)

+(applications à exécuter, quels conteneurs utiliser, nombre de répliquas, +les ressources réseau et disque etc)

Les services Kubernetes (control plan, exécuté sur les noeuds du cluster) -surveillent les resources demandées par l’application et mettent en place +surveillent les ressources demandées par l’application et mettent en place automatiquement celles-ci.

Le noeud master exécute kube-apiserver, kube-controller-manager et kube-scheduler

Chaque noeud esclave exécute :

@@ -80,13 +80,13 @@

Labels et selectors

Cluster

L’ensemble des machines (noeuds) exécutant les services kubernetes

Ces machines hébergent les charges applicatives

-

Pods

Un groupe de containers s’exécutant sur une machine et en partageant les resources : +

Pods

Un groupe de containers s’exécutant sur une machine et en partageant les ressources : - stockage (définition de volumes), - réseau (adresse IP unique dans le cluster)

Les containers d’un même pod partage la même adresse IP et le même espace de ports TCP. Ils peuvent communiquer entre eux par localhost et autres IPC. Ils ont accès aux volumes partagés définis au niveau du pod (et montables dans le file system).

-

Les pods sont schédulés sur des noeuds. Ils sont gérés en général par des controleurs (Deployment, StatefulSet, DaemonSet…​)

+

Les pods sont schédulés sur des noeuds. Ils sont gérés en général par des contrôleurs (Deployment, StatefulSet, DaemonSet…​)

Services

Une façon d’accéder aux ports exposés par les pods

Abstraction définissant un ensemble logique de Pods et une politique d’accès

L’ensemble des pods ciblés par un service est déterminé par un Label Selector

Quatre types :

  • ClusterIP : expose le service sur une IP interne au cluster

  • NodePort : expose un port statique (et crée un service ClusterIP)

  • LoadBalancer : expose un service sur une IP externe (et crée un service NodePort)

  • ExternalIP : expose une IP externe au cluster

Services

kind: Service
 apiVersion: v1
 metadata:
@@ -108,7 +108,7 @@
 

Il est possible de définir des quotas par namespace

Le namespace par défaut s’appelle default. Kube utilise ses propres namespaces (kube-system et kube-public)

ReplicaSet

Réplication de plusieurs Pods.

-

Ces objets sont très rarement accédés par le développeur, mais par les controlleurs +

Ces objets sont très rarement accédé par le développeur, mais par les contrôleurs de déploiement (page suivante)

Deployments

Un déploiement est une mise à jour déclarative de pods ou de ReplicaSets.

Le Deployment décrit l’état voulu, Le DeploymentController met tout en oeuvre pour y arriver.

Déploiements

apiVersion: apps/v1
@@ -134,7 +134,7 @@
         - containerPort: 80

StatefulSet

DaemonSet

-

Job

TP 1 : utilisation du mode impératif

tp-1.html[Aller au TP 1]

+

Job

TP 1 : utilisation du mode impératif

Manipulation des objets kubernetes

On peut utiliser des constructions impératives. Mais k8s excelle dans la description déclarative.

kubectl apply -f directory/

Pour détruire un objet

@@ -157,8 +157,8 @@

Kube Master + (kubelet et kubeproxy)

Authentification et autorisation

Le scheduler

Il a pour rôle d’affecter à chaque pod un ou des noeuds pour l’exécution, puis de séquencer le démarrage de ces pods.

-

Très important : les health check qui permettent au controleur de connaître le statut de chaque container, il est donc indispensable de les spécifier.

-

Rappel

Global view

Rappel

Architecture

Rappel

Exemple

Rappel

Utiliser le mode déclaratif

TP 2 : utilisation du mode déclaratif

tp-2.html[Aller au TP 2]

+

Très important : les health check qui permettent au contrôleur de connaître le statut de chaque container, il est donc indispensable de les spécifier.

+

Rappel

Global view

Rappel

Architecture

Rappel

Exemple

Rappel

Utiliser le mode déclaratif

TP 2 : utilisation du mode déclaratif

Avancé

Monter une infra on premise.

Si Windows 10 pro ⇒ HyperV