docker run -it ubuntu
apt update
From 3d4a23e89225ac8d1c8ce6569eb0fa85fe0b9e38 Mon Sep 17 00:00:00 2001
From: Philippe Coval 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 : 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 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 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 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 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 Rappel
Operating System
Operating System
Environnement
CHROOT
Exemple
CHROOT
Exemple
docker run -it ubuntu
apt update
Vision à grosse maille :
Ecosystème :
Vision à grosse maille :
Ecosystème :
Environnement de développement
kubectl
gcloud
est utilisé pour provisionner les resources.TP 0 : prise en main
Que s’est-il passé ?
Environnement de développement
kubectl
gcloud
est utilisé pour provisionner les resources.TP 0 : prise en main
Que s’est-il passé ?
Vue d’ensemble
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