Ri3 k8s 101
Ri3 k8s 101
Ri3 k8s 101
Introduction à Kubernetes
Benjamin Guillon
Principes de base, architecture, composants, ressources …
Le plan
Partie I - Conteneurs
Faire du neuf avec du vieux
3
19/02/2020 Introduction à Kubernetes
Virtualisation légère?
© Sascha Grunert
Il en existe quand même pas mal …
Partie II – Kubernetes
Les principes de base
7
19/02/2020 Introduction à Kubernetes
Y a-t-il un pilote dans l’avion?
• Framework extensible
➜Pourrait permettre de gérer autre chose que des conteneurs ?
© Imesh Gunaratne
« Piece of cake! » said no one, ever.
© Lucas Käldström
Plein de solutions …
Local, une
seule machine
Dans ton
Minikube « Cloud »
Google
Amazon
Microsoft
IBM
Redhat
VMWare
HP
…
« On
Premise »
« Managed »
ou pas …
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "prometheus-data"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: 5Gi
storageClassName: regular
FIELDS:
activeDeadlineSeconds <integer>
Optional duration in seconds the pod may be active on the node relative to
StartTime before the system will actively try to mark it failed and kill
associated containers. Value must be a positive integer.
affinity <Object>
If specified, the pod's scheduling constraints […]
19/02/2020 Introduction à Kubernetes 13
Centre de Calcul de l’Institut
National de Physique Nucléaire
et de Physique des Particules
14
19/02/2020 Introduction à Kubernetes
We need more minerals
$ cat web3.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: web3 $ kubectl get deploy
name: web3 NAME READY UP-TO-DATE AVAILABLE AGE
spec: web 1/1 1 1 2m
selector: web2 1/1 1 1 2m
matchLabels: web3 1/1 1 1 2m
app: web3
template:
metadata:
Quelques différences:
labels: • Labels associés (ie. « run »
app: web3
spec: vs « app »)
containers:
- image: nginx • Noms de ressources
name: web3
$ kubectl create -f web3.yaml
• Valeurs par défaut
19/02/2020 Introduction à Kubernetes 15
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 16
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 17
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 18
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 19
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 20
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 21
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 22
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 23
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 24
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 25
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 26
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 27
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 28
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 29
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 30
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 31
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 32
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 33
kubectl run web --image=nginx --replicas=3
©Jérôme Petazzoni
19/02/2020 Introduction à Kubernetes 34
Passage à l’échelle
Manuellement:
$ kubectl scale --replicas=3 deploy/web
deployment.extensions/web scaled
Recreate
On tue n avant de créer n+1
Le plus « élégant »
• Optimisé pour HTTP/HTTPS
• Peut faire plein de choses avec
le FQDN
• Gère les certificats (plugin)
Partie IV - Kubernetes
Intégration
43
19/02/2020 Introduction à Kubernetes
Stockage et gestion des données
Conteneur = éphémère
• Où mettre ses données?
Dans un volume !
• Non, c’est local au nœud :/
48
19/02/2020 Introduction à Kubernetes
Getting started