docker run -it ubuntu
apt update
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…
Processus (et programme en général) :
execution (CPU, GPU, …)
mémoire
entrées sorties :
réseau,
disque (file system),
…
L’OS gère les resources de la machine et l’exécution des processus
Les processus voient et partagent les resources
L’OS gère les ressources de la machine et l’exécution des processus
Les processus voient et partagent les ressources
Le programme a tout un tas de dépendances implicites :
bibliothèque runtime du langage de programmation,
parties du file system,
variables d’environnement…
Le lancement réussi d’un programme dépend donc d’un environnement adéquat
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
Pour commencer sous Docker :
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
Pour commencer sous Docker :
docker run -it ubuntu
apt update
Sinon :
Gérer des clusters de machines
Déployer, maintenir et scaler des applications. Conçu pour être extensible et adaptable.
Abbréviations : kube, k8s,…
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
docker compose
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
docker compose
docker swarm
mesos/marathon
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.html[Aller au TP 0]
Débrief du TP en passant en revue les resources créées pour l’occasion :
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.
Débrief du TP en passant en revue les ressources créées pour l’occasion :
kubectl get deployment,…
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)
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 :
L’ensemble des machines (noeuds) exécutant les services kubernetes
Ces machines hébergent les charges applicatives
Un groupe de containers s’exécutant sur une machine et en partageant les resources :
+ 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 Les pods sont schédulés sur des noeuds. Ils sont gérés en général par des controleurs (Deployment, StatefulSet, DaemonSet…)Pods
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 contrôleurs (Deployment, StatefulSet, DaemonSet…)
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
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
Rappel
Rappel
Rappel
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
Rappel
Rappel
Rappel
TP 2 : utilisation du mode déclaratif
Avancé
Monter une infra on premise.
Si Windows 10 pro ⇒ HyperV