Crée par Baptiste Leduc pour Weglot
C'est un mélange de:
Des process qui permettent d'isoler un environnement au sein d'un système linux.
Utilisé en production depuis plus de 15 ans par Google via LXC (et l'utilisation de chroot)
Mais le papier R&D est sorti ~8 ans après, pour éviter la concurrence
Création de Docker par Solomon Hykes
Au début basé sur LXC puis lâché pour un système de gestion du container interne: libcontainer
Une idée en tête: simplifier la création d’image via les Dockerfile et supprimer la lourdeur des VMs !
Et gérer des containers en production, c'est loin d'être simple, surtout à cette échelle, il faut une solution !
Création de Borg en interne pour gérer ces soucis de gestion des containers
Création du "Project Seven" par une partie du groupe ayant géré Borg
Google le rends open-source pour étendre son usage via Google Cloud
Don de la gestion du projet à la Cloud Native Computing Fundation (CNCF)
Elle met en place ces règles de gestions pour que le projet puisse servir à tous et rends le lien avec Google plus faible
Gérer des centaines de milliers de serveurs en production de façon automatique, flexible, scalable et fiable
Aujourd’hui ~20k nodes max par cluster, encore trop faible comparés aux ~2m serveurs de Google
Un des projets les plus actif sur Github ! 100 a 250 commits / jour (32 000 PR depuis 2014)
Des entreprises comme Amazon ou Microsoft qui ont des ingénieurs travaillant sur le projet
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8080
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
specs:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx-svc
servicePort: 80
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello world
restartPolicy: OnFailure
Utilisation de Google Kubernetes Engine à une échelle planétaire !
Plus gros déploiement (hors Google) fait sur la plateforme !
2014: Rancher Labs est fondé et crée Rancher !
Permet l'abstraction d'un service comme Kubernetes pour la plupart des providers populaires (Google / Amazon / Microsoft).
Et ainsi l'utilisation des services, du network, du load balancing, du monitoring et d'un recovery
Rien de plus simple ! Pour la production:
$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 \
rancher/rancher:latest --acme-domain admin.rancher.com
Et en plus, on auto-génère un certificat SSL avec certbot (via le service Let’s Encrypt)