KUBERNETES BEI CHEFKOCH
WHO'S THAT GUY?
▸ Pascal Cremer
▸ Senior Developer bei Chefkoch (September 2015)
▸ DevOps by Heart
▸ Docker seit 2013, Kubernetes seit 2015
▸ @b00igzm
KUBERNETES BEI CHEFKOCH
MICROSERVICES BEI CHEFKOCH
▸ Chefkoch: Europas größte Internet-Plattform und Community rund ums Thema kochen
▸ Von 8 Kollegen in der IT Ende 2014 zu ca. 50 Kollegen im Mai 2016
▸ 6 agile, autonome Entwickler-Teams (Web, Mobile, BI)
▸ Anfang 2015: Modernisierung der alten, monolithischen Architektur hin zu einer modernen Microservice-orientierten Architektur
▸ Herbst 2015: Realisierung neuer Features ausschließlich als Microservices mit Docker und Kubernetes
▸ Heute: 15+ Microservices in Produktion auf sieben CoreOS Nodes
KUBERNETES BEI CHEFKOCH
WAS IST KUBERNETES?
▸ Open Source Container Cluster Manager
▸ Entwickelt (und "dog fooded") von Google
▸ "Platform for automating deployment, scaling, and operations of application containers across clusters of hosts"
▸ (Quasi) Bleeding Edge (Version 1.0 im Juli 2015)
▸ kubelet ("Process Watcher"), API-Server + etcd & kubectl (CLI API-Client)
▸ Container agnostic: Docker, rkt, AppC
KUBERNETES BEI CHEFKOCH
KUBERNETES, THE BASICS
▸ Pods, Services, Labels, Replication Controllers (...)
▸ Pods beinhalten einen oder mehr Container
▸ Container in einem Pod teilen sich eine IP-Adresse, können gemeinsame Volumens haben und sich über localhost finden
▸ Services bilden das "Frontend" zu einem oder mehr Pods, welche über Labels selektiert werden
▸ Services können innerhalb von Containern z.B. über skydns gefunden werden
▸ Replication Controller kümmern sich um die Replikation / Skalierung von Pods
KUBERNETES BEI CHEFKOCH
KUBERNETES, THE GOOD PARTS
▸ All Power to DevOps!
▸ Neue Umgebungen (Staging, End2End, usw.) können schnell "hochgezogen" werden
▸ Saubere Isolierung der Microservices durch Verwendung von Kubernetes Namespaces
▸ Lifecycle Hooks, Readiness/Liveness Probes, Image Pull Policies...
▸ Zero-Downtime Deployments durch Rolling Updates
▸ Einfache Canary Deployments durch die Verwendung von Labels für Application Pods
my-service
my-app-v1-rc my-app-v2-rc
project: my-app
component: web
release: v2
project: my-app
component: web
release: v1
project: my-app
component: web
KUBERNETES BEI CHEFKOCH
KUBERNETES, THE BAD PARTS
▸ Steile Lernkurve
▸ Overhead für Entwickler (und Gegenwind vom Product-Management)
▸ Bleeding Edge: Bugs, Breaking Changes, spärliche Dokumentation und fehlende Features (kubectl wait, volumes-from, Templates)
▸ Nur bedingt als lokale Dev-Umgebung geeignet, da sehr "teuer" in Sachen Ressourcen (CPU, Memory)
▸ Cluster Updates sind aktuell noch eine größere Herausforderung
▸ "Selbst gestrickte" Lösungen notwendig für z.B. Logging, Monitoring, verteiltes Dateisystem usw.
Top Related