Save tuto corrections
This commit is contained in:
parent
f5ee6b8534
commit
10448a6c8d
115 changed files with 1423 additions and 1289 deletions
|
|
@ -3,11 +3,9 @@
|
|||
Mise en place
|
||||
=============
|
||||
|
||||
La mise en place d'un cluster Kubernetes ([prononcé
|
||||
Ku-ber-né-tice](https://github.com/kubernetes/kubernetes/issues/44308) en grec)
|
||||
est une opération qui peut s'avérer très longue et complexe, car elle nécessite
|
||||
l'installation et la configuration de nombreux composants avant de pouvoir être
|
||||
utilisé sereinement.
|
||||
La mise en place d'un cluster Kuernetes est une opération qui peut s'avérer
|
||||
très longue et complexe, car elle nécessite l'installation et la configuration
|
||||
de nombreux composants avant de pouvoir être utilisé pleinement.
|
||||
|
||||
Cette opération n'étant pas très palpitante (c'est beaucoup de lecture de
|
||||
documentations et d'heures passées à essayer de faire tomber en marche tous les
|
||||
|
|
@ -19,7 +17,7 @@ plupart des entreprises qui font le choix d'utiliser Kubernetes pour gérer leur
|
|||
infrastructures, choisissent de passer par un prestataire. L'entreprise délègue
|
||||
donc la gestion de son/ses cluster(s) à une autre entreprise, dont c'est le cœur de
|
||||
métier. La plupart du temps, il va s'agir d'Amazon (via [Elastic Kubernetes
|
||||
Service](https://aws.amazon.com/fr/eks/)), d'Azur ([Kubernetes
|
||||
Service](https://aws.amazon.com/fr/eks/)), d'Azure [Kubernetes
|
||||
Service](https://azure.microsoft.com/fr-fr/services/kubernetes-service/)) ou
|
||||
Google ([Kubernetes Engine](https://cloud.google.com/kubernetes-engine/)), mais
|
||||
d'autres acteurs plus petits existent aussi
|
||||
|
|
@ -28,79 +26,63 @@ d'autres acteurs plus petits existent aussi
|
|||
::::: {.more}
|
||||
|
||||
Pour l'IoT ou l'Edge Computing, sur du matériel léger, il existe le projet
|
||||
k3s[^k3s] : il s'agit d'une distribution Kubernetes beaucoup plus simple à
|
||||
k3s[^k3s] : il s'agit d'une distribution Kubernetes beaucoup plus simple à
|
||||
déployer, et parfaitement adaptée à la production sur Raspberry Pi et autres.
|
||||
|
||||
:::::
|
||||
|
||||
[^k3s]: https://k3s.io/
|
||||
[^k3s]: Lightweight Kubernetes : <https://k3s.io/>
|
||||
|
||||
Pour jouer aujourd'hui, plusieurs solutions s'offrent à nous pour commencer à
|
||||
utiliser Kubernetes facilement :
|
||||
|
||||
- [Docker Desktop (for Mac ou for Windows) :](#dockerdesktop) si vous êtes sur l'un de ces
|
||||
- [Docker Desktop (for Mac ou for Windows) :](#dockerdesktop) si vous êtes sur l'un de ces
|
||||
systèmes c'est la solution la plus simple,
|
||||
- [Kubernetes in Docker (kind) :](#kind) pour tenter l'aventure sur votre machine,
|
||||
- [Play With Kubernetes :](#pwk) si vous ne vous en sortez pas avec `kind`.
|
||||
- [Kubernetes in Docker (kind) :](#kind) pour tenter l'aventure sur votre machine,
|
||||
- [Play With Kubernetes :](#pwk) si vous ne vous en sortez pas avec `kind`.
|
||||
|
||||
\newpage
|
||||
|
||||
Docker for Mac/Windows {#dockerdesktop}
|
||||
----------------------
|
||||
### Docker for Mac/Windows {#dockerdesktop}
|
||||
|
||||
*Docker Desktop* pour Mac ou pour Windows intégre Kubernetes directement. Il
|
||||
n'est pas activé par défaut, pour cela il convient d'activer l'option dans les
|
||||
préférences de l'application :
|
||||
préférences de l'application :
|
||||
|
||||

|
||||

|
||||
|
||||
Une fois l'option activée, vous pouvez passer au chapitre suivant, la commande
|
||||
`kubectl` devrait marcher directement pour vous. C'est principalement grâce à
|
||||
cette commande que nous interagirons avec l'API de Kubernetes.
|
||||
|
||||
Une fois que tout sera opérationnel, nous devrions obtenir :
|
||||
Une fois que tout sera opérationnel, nous devrions obtenir :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ kubectl version
|
||||
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"archive", BuildDate:"2021-11-18T15:50:50Z", GoVersion:"go1.17.2", Compiler:"gc", Platform:"linux/amd64"}
|
||||
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5+k3s2", GitCommit:"724ef700bab896ff252a75e2be996d5f4ff1b842", GitTreeState:"clean", BuildDate:"2021-10-05T19:59:14Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
|
||||
Client Version: version.Info{Major:"1", minor:"22", GitVersion:"v1.22.2", [...]
|
||||
Server Version: version.Info{Major:"1", minor:"21", GitVersion:"v1.21.5", [...]
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
Kubernetes in Docker (kind) {#kind}
|
||||
---------------------------
|
||||
### Kubernetes in Docker (kind) {#kind}
|
||||
|
||||
`kind` est un projet permettant de lancer un cluster Kubernetes directement via
|
||||
Docker.
|
||||
|
||||
Pour commencer, il nous faudra télécharger le binaire (go, donc statique)
|
||||
suivant (il existe pour Linux, macOS et Windows) :
|
||||
suivant (il existe pour Linux, macOS et Windows) :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
curl -Lo kind https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-$(uname)-amd64
|
||||
chmod +x kind
|
||||
```
|
||||
</div>
|
||||
<https://github.com/kubernetes-sigs/kind/releases/latest>
|
||||
|
||||
Placez le binaire dans un endroit où il sera accessible de votre `$PATH`.
|
||||
|
||||
::::: {.question}
|
||||
|
||||
`uname` est à remplacer par votre système d'exploitation : `darwin` (macOS), `linux`, `windows`.
|
||||
|
||||
Il existe également pour d'autres architectures, consultez la [page des
|
||||
versions](https://github.com/kubernetes-sigs/kind/releases/latest) pour voir
|
||||
les différents binaires existants.
|
||||
|
||||
:::::
|
||||
Placez le binaire (`chmod +x {}`) dans un endroit où il sera accessible de
|
||||
votre `$PATH`.
|
||||
|
||||
|
||||
Notre prochaine étape est de décrire le cluster que l'on souhaite avoir : 1
|
||||
Notre prochaine étape est de décrire le cluster que l'on souhaite avoir : 1
|
||||
master et 2 workers, ça fera l'affaire. Attention tout de même de ne pas être
|
||||
trop extravagant, car chaque nœud consomme pas mal de RAM ! Et puis nous
|
||||
trop extravagant, car chaque nœud consomme pas mal de RAM ! Et puis nous
|
||||
pourrons facilement changer cette configuration plus tard.
|
||||
|
||||
<div lang="en-US">
|
||||
|
|
@ -126,25 +108,19 @@ kind create cluster --config my-cluster.yml
|
|||
|
||||
La création du cluster peut prendre quelques minutes.
|
||||
|
||||
Profitons-en pour télécharger `kubectl` :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.22.2/bin/linux/amd64/kubectl
|
||||
chmod +x kubectl
|
||||
```
|
||||
</div>
|
||||
Profitons-en pour télécharger `kubectl` :\
|
||||
<https://storage.googleapis.com/kubernetes-release/release/v1.22.2/bin/linux/amd64/kubectl>
|
||||
|
||||
C'est principalement grâce à cette commande que nous interagirons avec l'API de
|
||||
Kubernetes.
|
||||
|
||||
Une fois que tout sera opérationnel, nous devrions obtenir :
|
||||
Une fois que tout sera opérationnel, nous devrions obtenir :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
42sh$ kubectl version
|
||||
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"archive", BuildDate:"2021-11-18T15:50:50Z", GoVersion:"go1.17.2", Compiler:"gc", Platform:"linux/amd64"}
|
||||
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5+k3s2", GitCommit:"724ef700bab896ff252a75e2be996d5f4ff1b842", GitTreeState:"clean", BuildDate:"2021-10-05T19:59:14Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
|
||||
Client Version: Version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", [...]
|
||||
Server Version: Version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", [...]
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
@ -153,8 +129,7 @@ pris soin de l'exposer pour vous au moment de la création du cluster.
|
|||
|
||||
Passez ensuite au chapitre suivant si vous avez réussi à mettre en place `kind`.
|
||||
|
||||
Play With Kubernetes {#pwk}
|
||||
--------------------
|
||||
### Play With Kubernetes {#pwk}
|
||||
|
||||
::::: {.warning}
|
||||
|
||||
|
|
@ -163,18 +138,18 @@ cluster Kubernetes selon les autres méthodes décrites.
|
|||
|
||||
:::::
|
||||
|
||||
De la même manière que pour les TP utilisant Docker, si vous avez des
|
||||
De la même manière que pour les exercices utilisant Docker, si vous avez des
|
||||
difficultés pour réaliser les exercices sur vos machines, vous pouvez utiliser
|
||||
le projet [Play With K8s](https://play-with-k8s.com/) qui vous donnera accès à
|
||||
un bac à sable avec lequel vous pourrez réaliser tous les exercices de ce TP.
|
||||
un bac à sable avec lequel vous pourrez réaliser tous les exercices.
|
||||
|
||||
Il nous faut créer plusieurs instances, disons 3 : parmi elles, 1 instance sera
|
||||
Il nous faut créer plusieurs instances, disons 3 : parmi elles, 1 instance sera
|
||||
la master, nous l'utiliserons principalement, les deux autres ne feront
|
||||
qu'exécuter des conteneurs, nous pourrons les oublier dès qu'on les aura
|
||||
connectées au master.
|
||||
|
||||
Pour initialiser notre cluster Kubernetes, nous allons devoir créer notre
|
||||
master. Pour cela, dans notre première instance, nous allons taper :
|
||||
master. Pour cela, dans notre première instance, nous allons taper :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
@ -183,7 +158,7 @@ kubeadm init --apiserver-advertise-address $(hostname -i)
|
|||
</div>
|
||||
|
||||
Cette action peut prendre quelques minutes et devrait se finir, si tout se
|
||||
passe bien, par :
|
||||
passe bien, par :
|
||||
|
||||
<div lang="en-US">
|
||||
```
|
||||
|
|
@ -202,7 +177,7 @@ Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
|
|||
You can now join any number of machines by running the following on each node
|
||||
as root:
|
||||
|
||||
kubeadm join --token SOMETOKEN SOMEIPADDRESS --discovery-token-ca-cert-hash SOMESHAHASH
|
||||
kubeadm join --token TOKEN IPADDRESS --discovery-token-ca-cert-hash SHAHASH
|
||||
```
|
||||
</div>
|
||||
|
||||
|
|
@ -212,18 +187,18 @@ master.
|
|||
|
||||
Dernière étape pour la mise en place de notre cluster, il s'agit de définir un
|
||||
profil de politique réseau, sur le master (nous n'exécuterons plus de commande
|
||||
sur les autres workers) :
|
||||
sur les autres workers) :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
kubectl apply -n kube-system -f \
|
||||
"https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
|
||||
"https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | \
|
||||
base64 | tr -d '\n')"
|
||||
```
|
||||
</div>
|
||||
|
||||
|
||||
Minikube, k3d, MicroK8s, ...
|
||||
----------------------------
|
||||
### Minikube, k3d, MicroK8s, ...
|
||||
|
||||
Si les solutions précédentes ne sont pas adaptées à votre usage, de nombreuses
|
||||
autres applications permettent de mettre en place un cluster plus ou moins
|
||||
|
|
@ -239,7 +214,7 @@ Vous pouvez tenter d'utiliser
|
|||
est un script similaire à `kind`, mais utilise `k3s`, une version plus légère
|
||||
et compacte de Kubernetes.
|
||||
|
||||
Après l'avoir installé, vous pouvez lancer
|
||||
Après l'avoir installé, vous pouvez lancer :
|
||||
|
||||
<div lang="en-US">
|
||||
```bash
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue