Historique
• Origine : Borg, l’orchestrateur de Google
• En 2014, début du projet “Seven”, son remplaçant
• Volonté de le rendre Open Source
• Kubernetes est né !
• Version 1.0 en 2015, et don à la CNCF
Slide 5
Slide 5 text
Objectifs
• Découpler infra et applications
• Scale
• Générique / Flexible
• Automatisable
• Extensible
• Portable (cloud provider, bare metal, …)
Slide 6
Slide 6 text
Un gros projet
1500 contributeurs
32 000 PR depuis 2014
Slide 7
Slide 7 text
Structure
• Code of Conduct et CLA
• Doc claire sur la participation
• Special Interest Groups (SIGs)
• Working groups
• Committees
Slide 8
Slide 8 text
Releases
Slide 9
Slide 9 text
Releases
Slide 10
Slide 10 text
Features
Alpha
1.5
Décembre 2016
Beta
1.7
Juin 2017
Stable
1.8
Septembre 2017
Alpha
1.6
Mars 2017
DaemonSet Jobs
CronJobs
NetworkPolicy
Secret
Ingress
Volume
…
Slide 19
Slide 19 text
Architecture
Slide 20
Slide 20 text
etcd etcd
etcd
Key/Value store
Distribué
Watch
Slide 21
Slide 21 text
etcd etcd
etcd
API Server
Scheduler
Controller
manager
Slide 22
Slide 22 text
kubelet
kube-proxy
Pod Pod Pod Pod Pod
Pod Pod Pod Pod Pod
Slide 23
Slide 23 text
Pré-requis réseau
• Tous les containers peuvent communiquer avec entre-eux
sans NAT
• Tous les noeuds peuvent communiquer avec tous les
containers sans NAT
• L’IP d’un container vue de l’intérieur du container est la
même que vu de l’extérieur
Slide 24
Slide 24 text
Container Runtime
• Docker
• CRI-O : interface OCI standard
• rkt (CoreOS)
• Frakti : basé sur un hyperviseur
Slide 25
Slide 25 text
Node 1 Node 2 Node n
etcd etcd
etcd
API Server
Scheduler
Controller
manager
…
Slide 26
Slide 26 text
Kubectl
$ kubectl apply -f nginx.yaml nginx-svc.yml
$ kubectl get all
NAME READY STATUS RESTARTS AGE
po/nginx 1/1 Running 0 12h
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/nginx-svc 10.0.0.116 80/TCP 7s
Slide 27
Slide 27 text
Federation
Slide 28
Slide 28 text
Add-ons
Slide 29
Slide 29 text
Kube DNS
nginx-svc.my-namespace.svc.cluster.local
_http._tcp.nginx-svc.my-namespace.svc.cluster.local
1-2-3-4.default.pod.cluster.local