Skip to content

Commit

Permalink
console >> bash
Browse files Browse the repository at this point in the history
  • Loading branch information
herveleclerc committed Sep 18, 2024
1 parent e96ecf7 commit 1dac15b
Show file tree
Hide file tree
Showing 15 changed files with 140 additions and 126 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ RUN <<EOF

for i in `ls -1 /usr/share/nginx/html/*.html`
do
echo "<a href=$(basename $i)>$(basename $i)</a>" >> /usr/share/nginx/html/index.html
echo "<br>- <a href=$(basename $i)>$(basename $i)</a><br>" >> /usr/share/nginx/html/index.html
done

echo '</body>' >> /usr/share/nginx/html/index.html
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ demandée.
#### Exemples


```console
```bash
./build.sh -c docker -l fr -o html
./build.sh -o pdf
./build.sh -c openstack-user -u ~/reveal.js
Expand All @@ -142,7 +142,7 @@ Le build se fait entièrement en local.

Quelques exemples :

```console
```bash
make openstack.pdf
make docker-handout.pdf
make docker-print.pdf
Expand Down
34 changes: 20 additions & 14 deletions cours/containers/kubernetes/k8s-core-api-objects.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ spec:

- Il est possible de les voir en utilisant `--show-labels`:

```console
```bash
$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx 1/1 Running 0 31s app=nginx,env=prod
Expand Down Expand Up @@ -147,6 +147,12 @@ spec:
port:
```

### Kubernetes : `Pod`

![](images/kubernetes/how-you-deploy-a-container-on-kubernetes.jpg){height="650px"}



### Kubernetes : `Pod`

- Un Pod n'est pas un processus, c'est un environnement pour les containers
Expand All @@ -169,7 +175,7 @@ En savoir plus : <https://kubernetes.io/fr/docs/concepts/workloads/pods/pod/>

### Kubernetes : `Pod`

![pods](images/pods.png)
![](images/pods.png)

### Kubernetes : Pod

Expand Down Expand Up @@ -200,13 +206,13 @@ Dans les statuts du pod on trouve la notion de phase d'exécution
- `Unknown`: L'état du pod ne peut pas être déterminé


```console
```bash
$ kubectl get pods -o wide
```

en sortie :

```console
```bash
NAME READY STATUS RESTARTS AGE IP NODE
xx-79c5968bdc-6lcfq 1/1 Running 0 84m 10.244.0.6 kind-cp
yy-ss7nk 1/1 Running 0 84m 10.244.0.5 kind-cp
Expand All @@ -223,13 +229,13 @@ dans les statuts du pod on trouve la notion de Conditions d'état des pods
- `Initialized`: Les "Init containers sont démarrés"
- `Ready`: Le pod est capable de répondre aux demandes ; par conséquent, il doit être inclus dans le service et les répartiteurs de charge.

```console
$ kubectl describe pods <POD_NAME>
```bash
kubectl describe pods <POD_NAME>
```

en sortie

```console
```bash
...
Conditions:
Type Status
Expand All @@ -252,7 +258,7 @@ Les containers peuvent avoir seulement 3 états
- `Terminated`: L'exécution du conteneur s'est déroulée et s'est terminée par un succès ou un échec.


```console
```bash
$ kubectl get pods <POD_NAME> -o jsonpath='{.status}' | jq
```

Expand Down Expand Up @@ -322,7 +328,7 @@ spec:

ou en ligne de commande

```console
```bash
kubectl create deployment my-deployment --image=nginx:latest --replicas=3
```

Expand Down Expand Up @@ -401,7 +407,7 @@ spec:
- containerPort: 80
```

```console
```bash
kubectl get po
NAME READY STATUS RESTARTS AGE
web-0 0/1 ContainerCreating 0 3s
Expand Down Expand Up @@ -533,7 +539,7 @@ spec:
En ligne de commande :
```console
```bash
kubectl create job exemple-job --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
```

Expand Down Expand Up @@ -575,20 +581,20 @@ spec:

En ligne de commande :

```console
```bash
kubectl create cronjob exemple-cronjob --image=busybox --schedule="*/5 * * * *" -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
```

Susprendre un cronjob :

```console
```bash
kubectl patch cronjob <cronjob-name> -p '{"spec" : {"suspend" : true }}'
```

Reprendre l'exécution :


```console
```bash
kubectl patch cronjob <cronjob-name> -p '{"spec" : {"suspend" : false }}'
```

Expand Down
4 changes: 2 additions & 2 deletions cours/containers/kubernetes/k8s-helm-intro.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ A voir :

- Structure par défaut d'un chart

```console
```bash
mychart/
├── Chart.yaml
├── charts
Expand All @@ -72,7 +72,7 @@ mychart/
### Kubernetes : Helm installation premiers pas

- Installer Helm (sur une distribution Linux):
```console
```bash
curl \
https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get-helm-3 | bash
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,33 +46,33 @@ L'approche impérative consiste à donner des instructions directes à Kubernete

- Creation d'un pod NGINX:

```console
```bash
kubectl run nginx --image=nginx
```

- Générez le fichier YAML du manifeste d'un pod (-o yaml), sans le créer (--dry-run):

```console
```bash
kubectl run nginx --image=nginx --dry-run=client -o yaml
```

- Générer un déploiement avec 4 réplicas:

```console
```bash
kubectl create deployment nginx --image=nginx --replicas=4
```

### La méthode impérative

- Mise à l'échelle d'un déploiement à l'aide de la commande `kubectl scale`:

```console
```bash
kubectl scale deployment nginx --replicas=4
```

- Il est possible aussi d'enregistrer la définition YAML dans un fichier et de le modifier:

```console
```bash
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
```

Expand All @@ -83,20 +83,20 @@ kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-d

- Créer un service nommé redis-service de type ClusterIP pour exposer le pod redis sur le port 6379:

```console
```bash
kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
```

- Créer un service nommé nginx de type NodePort pour exposer le port 80 du pod nginx sur le port 30080 des nœuds:

```console
```bash
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service --dry-run=client -o yaml
```

- Cela utilisera automatiquement les labels du pod comme sélecteurs, sans possibilité de spécifier le port du nœud. Avec le fichier généré, ajoutez le port de nœud manuellement avant de créer le service avec le pod.
- Ou:

```console
```bash
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
```

Expand Down
16 changes: 12 additions & 4 deletions cours/containers/kubernetes/k8s-installation.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ ou plus simplement : `curl -sfL https://get.k3s.io | sh -`
- Licence obligatoire si autre utilisation que personnelle (<https://www.docker.com/pricing/>)


![docker desktop](images/docker-desktop.svg){height="350px"}
![Docker desktop](images/docker-desktop.svg){height="350px"}



Expand All @@ -82,7 +82,7 @@ ou plus simplement : `curl -sfL https://get.k3s.io | sh -`
- Build et Run de container (nerdctl ou Docker CLI)
- Choix des version de kubernetes

![docker desktop](images/kubernetes/rancher-desktop.png){height="350px"}
![Rancher desktop](images/kubernetes/rancher-desktop.png){height="350px"}



Expand Down Expand Up @@ -118,17 +118,21 @@ ou plus simplement : `curl -sfL https://get.k3s.io | sh -`
### kubeadm demo


<iframe width="560" height="315" src="https://www.youtube.com/embed/jwBK9b5X1rk?si=t8Q_aGaTV6zcr5u6" title="kubeadm" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="660" height="415" src="https://www.youtube.com/embed/jwBK9b5X1rk?si=t8Q_aGaTV6zcr5u6" title="kubeadm" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


### kubeadm fonctionnalités

- En plus de l'installation de Kubernetes, kubeadm peut :
- En plus de l'installation de Kubernetes, `kubeadm` peut :

- Génération des fichiers de configuration: Crée les fichiers de configuration nécessaires pour les composants du cluster.

- Gestion des certificats: Génère et distribue les certificats nécessaires pour sécuriser les communications entre les composants du cluster.

- Gestion des tokens: Crée des tokens d'authentification pour les nœuds qui rejoignent le cluster.

- Vérification de la configuration: Valide que le système et les configurations sont compatibles avec Kubernetes.

- Mises à jour et modifications: Facilite les mises à jour des versions de Kubernetes et les modifications de la configuration du cluster.


Expand All @@ -138,9 +142,11 @@ ou plus simplement : `curl -sfL https://get.k3s.io | sh -`
- Amazon Elastic Kubernetes Service (EKS):
- Documentation : https://aws.amazon.com/fr/eks/
- Offre une solution entièrement gérée pour déployer, gérer et mettre à l'échelle des clusters Kubernetes sur AWS.

- Google Kubernetes Engine (GKE):
- Documentation : https://cloud.google.com/kubernetes-engine
- Propose une plateforme hautement disponible et entièrement gérée pour exécuter des applications conteneurisées sur Google Cloud Platform.

- Azure Kubernetes Service (AKS):
- Documentation : https://azure.microsoft.com/fr-fr/services/kubernetes-service/
- Permet de déployer et gérer des clusters Kubernetes sur Azure avec une intégration profonde avec les autres services Azure.
Expand Down Expand Up @@ -169,7 +175,9 @@ ou plus simplement : `curl -sfL https://get.k3s.io | sh -`
### Installateurs de Kubernetes

- Via Ansible : `kubespray` <https://github.com/kubernetes-sigs/kubespray>

- Via Terraform : <https://github.com/poseidon/typhoon>

- Il existe d'autres projets open source basés sur le langage Go :
- kube-aws : <https://github.com/kubernetes-incubator/kube-aws>
- kops : <https://github.com/kubernetes/kops>
Expand Down
8 changes: 4 additions & 4 deletions cours/containers/kubernetes/k8s-logging-monitoring.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@

- Les performances des pods et des noeuds peuvent être affichées avec la commande `kubectl top pods` et `kubectl top nodes`

```console
```bash
$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
gke-cka-pool1-8e771340-lzju 86m 4% 736Mi 13%
gke-cka-pool1-f884d89f-pnbx 155m 8% 811Mi 14%
```

```console
```bash
$ kubectl -n lab top pods
NAME CPU(cores) MEMORY(bytes)
lab-middleware-c46cd576f-5vltl 1m 40Mi
Expand All @@ -42,15 +42,15 @@ lab-middleware-c46cd576f-7zckz 1m 43Mi

### Logging

```console
```bash
$ kubectl -n lab get pods
NAME READY STATUS RESTARTS AGE
lab-middleware-c46cd576f-5vltl 1/1 Running 0 17d
lab-middleware-c46cd576f-7zckz 1/1 Running 0 17d
```


```console
```bash
$ kubectl -n lab logs lab-middleware-c46cd576f-5vltl
info: serving app on http://0.0.0.0:3333
[bugsnag] Loaded!
Expand Down
2 changes: 1 addition & 1 deletion cours/containers/kubernetes/k8s-maintenance.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
- Voici les étapes à suivre pour une mise à niveau d'un cluster avec Kubeadm:
- La commande `kubeadm upgrade plan` fournit les informations sur la version actuelle de kubeadm installée, la version du cluster et la dernière version stable de Kubernetes disponible

```console
```bash
kubectl drain worker-0
apt-get upgrade -y kubeadm=1.21.0-00
apt-get upgrade -y kubelet=1.21.0-00
Expand Down
Loading

0 comments on commit 1dac15b

Please sign in to comment.