Skip to content

Commit

Permalink
html: Rebuilt
Browse files Browse the repository at this point in the history
```sh
 sudo apt-get install asciidoctor
 sh -x -e ./compile.sh
 gem pristine executable-hooks --version 1.6.0
 gem install tilt
 gem install slim
 sh -x -e ./compile.sh
```

Change-Id: Ifbde105fa94487f363348cac0f9304cae5360ba8
Relate-to: https://tizenteam.github.io/formations/formation-kubernetes/
Signed-off-by: Philippe Coval <[email protected]>
  • Loading branch information
rzr committed Jul 18, 2019
1 parent b2dd596 commit 3d4a23e
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 36 deletions.
30 changes: 15 additions & 15 deletions formation-kubernetes/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<div class="paragraph"><p>Speaker à Java One, Devoxx, GDG, JUG, GWTCon&#8230;&#8203;</p></div></section>
<section id="_rappel"><h2>Rappel</h2><div class="paragraph"><p>Processus (et programme en général) :</p></div>
<div class="ulist"><ul><li><p>execution (CPU, GPU, &#8230;&#8203;)</p></li><li><p>mémoire</p></li><li><p>entrées sorties :</p></li><li><p>réseau,</p></li><li><p>disque (file system),</p></li><li><p>&#8230;&#8203;</p></li></ul></div></section>
<section id="_operating_system"><h2>Operating System</h2><div class="paragraph"><p>L&#8217;OS gère les resources de la machine et l&#8217;exécution des processus</p></div>
<div class="paragraph"><p>Les processus voient et partagent les resources</p></div></section>
<section id="_operating_system"><h2>Operating System</h2><div class="paragraph"><p>L&#8217;OS gère les ressources de la machine et l&#8217;exécution des processus</p></div>
<div class="paragraph"><p>Les processus voient et partagent les ressources</p></div></section>
<section id="_environnement"><h2>Environnement</h2><div class="paragraph"><p>Le programme a tout un tas de dépendances implicites :</p></div>
<div class="ulist"><ul><li><p>bibliothèque runtime du langage de programmation,</p></li><li><p>parties du file system,</p></li><li><p>variables d&#8217;environnement&#8230;&#8203;</p></li></ul></div>
<div class="paragraph"><p>Le lancement réussi d&#8217;un programme dépend donc d&#8217;un environnement adéquat</p></div></section>
<section><section id="_chroot"><h2>CHROOT</h2><div class="paragraph"><p>Change le répertoire racine d&#8217;un processus</p></div><div class="paragraph"><p>Isolation de l&#8217;execution du processus</p></div><div class="paragraph"><p>A partir de là il est possible de construire l&#8217;environnement FS adequat</p></div></section><section id="_exemple"><h2>Exemple</h2><div class="paragraph"><p>Pour commencer sous Docker :</p></div>
<section><section id="_chroot"><h2>CHROOT</h2><div class="paragraph"><p>Change le répertoire racine d&#8217;un processus</p></div><div class="paragraph"><p>Isolation de l&#8217;exécution du processus</p></div><div class="paragraph"><p>A partir de là il est possible de construire l&#8217;environnement FS adéquat</p></div></section><section id="_exemple"><h2>Exemple</h2><div class="paragraph"><p>Pour commencer sous Docker :</p></div>
<div class="listingblock"><div class="content"><pre class="highlight"><code class="bash language-bash">docker run -it ubuntu
apt update</code></pre></div></div>
<div class="paragraph"><p>Sinon :</p></div>
Expand Down Expand Up @@ -61,17 +61,17 @@
<div class="paragraph"><p>Gérer des clusters de machines</p></div>
<div class="paragraph"><p>Déployer, maintenir et scaler des applications. Conçu pour être extensible et adaptable.</p></div>
<div class="paragraph"><p>Abbréviations : kube, k8s,&#8230;&#8203;</p></div></section>
<section><section id="_vision_à_grosse_maille"><h2>Vision à grosse maille :</h2><div class="ulist"><ul><li><p>description déclarative des déploiements</p></li><li><p>placement automatique des containers en fonction des contraintes et prérequis déclarés par l&#8217;application</p></li><li><p>gestion des failles (les containers redémarrent automatiquement)</p></li><li><p>mise à l&#8217;échelle horizontale</p></li><li><p>découverte de services et load balancing</p></li><li><p>mises à jour en rollout et rollback</p></li><li><p>stockage</p></li><li><p>gestion de la configuration applicative</p></li><li><p>auto-healing</p></li></ul></div></section><section id="_ecosystème"><h2>Ecosystème :</h2><div class="paragraph"><p>docker compose</p></div>
<section><section id="_vision_à_grosse_maille"><h2>Vision à grosse maille :</h2><div class="ulist"><ul><li><p>description déclarative des déploiements</p></li><li><p>placement automatique des containers en fonction des contraintes et pré-requis déclarés par l&#8217;application</p></li><li><p>gestion des failles (les containers redémarrent automatiquement)</p></li><li><p>mise à l&#8217;échelle horizontale</p></li><li><p>découverte de services et load balancing</p></li><li><p>mises à jour en rollout et rollback</p></li><li><p>stockage</p></li><li><p>gestion de la configuration applicative</p></li><li><p>auto-healing</p></li></ul></div></section><section id="_ecosystème"><h2>Ecosystème :</h2><div class="paragraph"><p>docker compose</p></div>
<div class="paragraph"><p>docker swarm</p></div>
<div class="paragraph"><p>mesos/marathon</p></div></section></section>
<section><section id="_environnement_de_développement"><h2>Environnement de développement</h2><div class="paragraph"><p>Kubernetes met à disposition un outil <code>kubectl</code></p></div><div class="paragraph"><p>Kubernetes est platforme-agnostique et s&#8217;intègre avec différents plateformes comme par exemple :</p></div><div class="ulist"><ul><li><p>AWS,</p></li><li><p>GCP,</p></li><li><p>OpenShift,</p></li><li><p>Minikube&#8230;&#8203;</p></li></ul></div><div class="paragraph"><p>Aujourd&#8217;hui kubernetes se fonde sur un environnement GNU/Linux.</p></div><div class="paragraph"><p>Pour GCP, outil <code>gcloud</code> est utilisé pour provisionner les resources.</p></div></section><section id="_tp_0_prise_en_main"><h2>TP 0 : prise en main</h2><div class="paragraph"><p>tp-0.html[Aller au TP 0]</p></div></section></section>
<section id="_que_s_est_il_passé"><h2>Que s&#8217;est-il passé ?</h2><div class="paragraph"><p>Débrief du TP en passant en revue les resources créées pour l&#8217;occasion :</p></div>
<section><section id="_environnement_de_développement"><h2>Environnement de développement</h2><div class="paragraph"><p>Kubernetes met à disposition un outil <code>kubectl</code></p></div><div class="paragraph"><p>Kubernetes est platforme-agnostique et s&#8217;intègre avec différents plateformes comme par exemple :</p></div><div class="ulist"><ul><li><p>AWS,</p></li><li><p>GCP,</p></li><li><p>OpenShift,</p></li><li><p>Minikube&#8230;&#8203;</p></li></ul></div><div class="paragraph"><p>Aujourd&#8217;hui kubernetes se fonde sur un environnement GNU/Linux.</p></div><div class="paragraph"><p>Pour GCP, outil <code>gcloud</code> est utilisé pour provisionner les resources.</p></div></section><section id="_tp_0_prise_en_main"><h2>TP 0 : prise en main</h2><div class="paragraph"><p><a href="tp0/tp-0.html">Aller au TP 0</a></p></div></section></section>
<section id="_que_s_est_il_passé"><h2>Que s&#8217;est-il passé ?</h2><div class="paragraph"><p>Débrief du TP en passant en revue les ressources créées pour l&#8217;occasion :</p></div>
<div class="ulist"><ul><li><p>kubectl get deployment,&#8230;&#8203;</p></li></ul></div></section>
<section id="_vue_d_ensemble"><h2>Vue d&#8217;ensemble</h2><div class="paragraph"><p>Le développeur utilise l&#8217;API k8s (souvent avec <code>kubectl</code>) pour décrire l&#8217;état désiré du cluster
(applications à exécuter, quels conteneurs utiliser, nombre de réplicas,
les resources réseau et disque etc)</p></div>
(applications à exécuter, quels conteneurs utiliser, nombre de répliquas,
les ressources réseau et disque etc)</p></div>
<div class="paragraph"><p>Les services Kubernetes (<em>control plan</em>, exécuté sur les noeuds du cluster)
surveillent les resources demandées par l&#8217;application et mettent en place
surveillent les ressources demandées par l&#8217;application et mettent en place
automatiquement celles-ci.</p></div>
<div class="paragraph"><p>Le noeud master exécute <code>kube-apiserver</code>, <code>kube-controller-manager</code> et <code>kube-scheduler</code></p></div>
<div class="paragraph"><p>Chaque noeud esclave exécute :</p></div>
Expand All @@ -80,13 +80,13 @@
<section id="_labels_et_selectors"><h2>Labels et selectors</h2><div class="paragraph"><p><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" class="bare">https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors</a></p></div></section>
<section id="_cluster"><h2>Cluster</h2><div class="paragraph"><p>L&#8217;ensemble des machines (noeuds) exécutant les services kubernetes</p></div>
<div class="paragraph"><p>Ces machines hébergent les charges applicatives</p></div></section>
<section id="_pods"><h2>Pods</h2><div class="paragraph"><p>Un groupe de containers s&#8217;exécutant sur une machine et en partageant les resources :
<section id="_pods"><h2>Pods</h2><div class="paragraph"><p>Un groupe de containers s&#8217;exécutant sur une machine et en partageant les ressources :
- stockage (définition de volumes),
- réseau (adresse IP unique dans le cluster)</p></div>
<div class="paragraph"><p>Les containers d&#8217;un même pod partage la même adresse IP et le même espace de ports TCP.
Ils peuvent communiquer entre eux par <code>localhost</code> et autres IPC.
Ils ont accès aux volumes partagés définis au niveau du pod (et montables dans le file system).</p></div>
<div class="paragraph"><p>Les pods sont schédulés sur des noeuds. Ils sont gérés en général par des <em>controleurs</em> (Deployment, StatefulSet, DaemonSet&#8230;&#8203;)</p></div></section>
<div class="paragraph"><p>Les pods sont schédulés sur des noeuds. Ils sont gérés en général par des <em>contrôleurs</em> (Deployment, StatefulSet, DaemonSet&#8230;&#8203;)</p></div></section>
<section><section id="_services"><h2>Services</h2><div class="paragraph"><p>Une façon d&#8217;accéder aux ports exposés par les pods</p></div><div class="paragraph"><p>Abstraction définissant un ensemble logique de Pods et une politique d&#8217;accès</p></div><div class="paragraph"><p>L&#8217;ensemble des pods ciblés par un service est déterminé par un Label Selector</p></div><div class="paragraph"><p>Quatre types :</p></div><div class="ulist"><ul><li><p>ClusterIP : expose le service sur une IP interne au cluster</p></li><li><p>NodePort : expose un port statique (et crée un service ClusterIP)</p></li><li><p>LoadBalancer : expose un service sur une IP externe (et crée un service NodePort)</p></li><li><p>ExternalIP : expose une IP externe au cluster</p></li></ul></div></section><section id="_services_2"><h2>Services</h2><div class="listingblock"><div class="content"><pre class="highlight"><code class="yaml language-yaml">kind: Service
apiVersion: v1
metadata:
Expand All @@ -108,7 +108,7 @@
<div class="paragraph"><p>Il est possible de définir des quotas par namespace</p></div>
<div class="paragraph"><p>Le namespace par défaut s&#8217;appelle <code>default</code>. Kube utilise ses propres namespaces (<code>kube-system</code> et <code>kube-public</code>)</p></div></section>
<section id="_replicaset"><h2>ReplicaSet</h2><div class="paragraph"><p>Réplication de plusieurs Pods.</p></div>
<div class="paragraph"><p>Ces objets sont très rarement accédés par le développeur, mais par les controlleurs
<div class="paragraph"><p>Ces objets sont très rarement accédé par le développeur, mais par les contrôleurs
de déploiement (page suivante)</p></div></section>
<section><section id="_deployments"><h2>Deployments</h2><div class="paragraph"><p>Un déploiement est une mise à jour déclarative de pods ou de ReplicaSets.</p></div><div class="paragraph"><p>Le Deployment décrit l&#8217;état voulu,
Le DeploymentController met tout en oeuvre pour y arriver.</p></div><div class="paragraph"><p><a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/" class="bare">https://kubernetes.io/docs/concepts/workloads/controllers/deployment/</a></p></div></section><section id="_déploiements"><h2>Déploiements</h2><div class="listingblock"><div class="content"><pre class="highlight"><code class="yaml language-yaml">apiVersion: apps/v1
Expand All @@ -134,7 +134,7 @@
- containerPort: 80</code></pre></div></div></section></section>
<section id="_statefulset"><h2>StatefulSet</h2></section>
<section id="_daemonset"><h2>DaemonSet</h2></section>
<section><section id="_job"><h2>Job</h2></section><section id="_tp_1_utilisation_du_mode_impératif"><h2>TP 1 : utilisation du mode impératif</h2><div class="paragraph"><p>tp-1.html[Aller au TP 1]</p></div></section></section>
<section><section id="_job"><h2>Job</h2></section><section id="_tp_1_utilisation_du_mode_impératif"><h2>TP 1 : utilisation du mode impératif</h2><div class="paragraph"><p><a href="tp1/tp-1.html">Aller au TP 1</a></p></div></section></section>
<section id="_manipulation_des_objets_kubernetes"><h2>Manipulation des objets kubernetes</h2><div class="paragraph"><p>On peut utiliser des constructions impératives. Mais k8s excelle dans la description déclarative.</p></div>
<div class="literalblock"><div class="content"><pre>kubectl apply -f directory/</pre></div></div>
<div class="paragraph"><p>Pour détruire un objet</p></div>
Expand All @@ -157,8 +157,8 @@
<div class="paragraph"><p>Kube Master + (kubelet et kubeproxy)</p></div>
<div class="paragraph"><p>Authentification et autorisation</p></div></section>
<section id="_le_scheduler"><h2>Le scheduler</h2><div class="paragraph"><p>Il a pour rôle d&#8217;affecter à chaque pod un ou des noeuds pour l&#8217;exécution, puis de séquencer le démarrage de ces pods.</p></div>
<div class="paragraph"><p>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.</p></div></section>
<section><section id="_rappel_2"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093847.jpg" alt="Global view"></div></div></section><section id="_rappel_3"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093851.jpg" alt="Architecture"></div></div></section><section id="_rappel_4"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093858.jpg" alt="Exemple"></div></div></section><section id="_rappel_5"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_095809.jpg" alt="Utiliser le mode déclaratif"></div></div></section><section id="_tp_2_utilisation_du_mode_déclaratif"><h2>TP 2 : utilisation du mode déclaratif</h2><div class="paragraph"><p>tp-2.html[Aller au TP 2]</p></div></section></section>
<div class="paragraph"><p>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.</p></div></section>
<section><section id="_rappel_2"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093847.jpg" alt="Global view"></div></div></section><section id="_rappel_3"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093851.jpg" alt="Architecture"></div></div></section><section id="_rappel_4"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_093858.jpg" alt="Exemple"></div></div></section><section id="_rappel_5"><h2>Rappel</h2><div class="imageblock" style=""><div class="content"><img src="images/20180515_095809.jpg" alt="Utiliser le mode déclaratif"></div></div></section><section id="_tp_2_utilisation_du_mode_déclaratif"><h2>TP 2 : utilisation du mode déclaratif</h2><div class="paragraph"><p><a href="tp2/tp-2.html">Aller au TP 2</a></p></div></section></section>
<section id="_avancé"><h2>Avancé</h2><div class="paragraph"><p>Monter une infra on premise.</p></div>
<div class="paragraph"><p>Si Windows 10 pro &#8658; HyperV</p></div></section></div></div><script src="reveal.js/lib/js/head.min.js"></script><script src="reveal.js/js/reveal.js"></script><script>// See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options
Reveal.initialize({
Expand Down
15 changes: 8 additions & 7 deletions formation-kubernetes/tp0/tp-0.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.4">
<meta name="generator" content="Asciidoctor 1.5.5">
<title>TP 0 - Prise en main de K8S</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
Expand All @@ -17,7 +17,6 @@
[hidden],template{display:none}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{margin:0}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
Expand Down Expand Up @@ -52,7 +51,7 @@
table{border-collapse:collapse;border-spacing:0}
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
Expand All @@ -64,7 +63,6 @@
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
body{-webkit-font-smoothing:antialiased}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
Expand Down Expand Up @@ -119,13 +117,16 @@
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
body{tab-size:4}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.clearfix:after,.float-group:after{clear:both}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
*:not(pre)>code.nobreak{word-wrap:normal}
*:not(pre)>code.nowrap{white-space:nowrap}
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
Expand Down Expand Up @@ -575,7 +576,7 @@ <h3 id="_prise_en_main">Prise en main</h3>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2018-05-15 11:54:08 CEST
Last updated 2019-07-18 12:36:44 CEST
</div>
</div>
</body>
Expand Down
Loading

0 comments on commit 3d4a23e

Please sign in to comment.