Kubernetes von Google soll den Einsatz von Docker Container im Cluster ermöglichen. Wir haben eine Testinstallation durchgeführt und die Stärken und Schwächen analysiert…
2. 2
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
MANAGE THE MINIONS
...WITH KUBERNETES
3. 3
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
THEMEN
1. WARUM CONTAINER?
2. WAS IST KUBERNETES?
3. VOR- UND NACHTEILE
4. AUSBLICK
4. 4
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WARUM CONTAINER?
• mehr „Freiheit im Systembau“
• Kunde stellt Docker Image selbst zur Verfügung
• Kunde kann Software im Image selbst deployen
• es kann eigene Software deployed werden, welche als „root“
ausgeführt werden kann
• Continous Deployment
• es können die selben Docker Images in allen Entwicklungsstufen
genutzt werden
• schnell skalierbar
• Es sollen gesamte Infrastrukturen „dockerized“ werden können
• Mehr Performance durch direkte Interaktion mit dem Host Kernel
5. 5
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WARUM CONTAINER?
• Ziele und Auswirkungen für Nine:
• ein multi Tenant Cluster auf dem Docker Images der Kunden
laufen
• „gewohnte“ Sicherheit zwischen den virtualisierten Systemen
• Monitoring kann nicht auf Service Ebene stattfinden
• es wird wird ein Tool zur Orchestrierung benötigt
• Wir bieten einen „managed Cluster“...keine „managed Services“
6. 6
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• Orchestrierungs- und Clustermanager Framework entwickelt von
Google
• alle Komponenten besitzen eine zugängliche API
• unterteilt Cluster Aufbau in verschiedene Komponenten
• benötigt zusätzlich „etcd“ (verteilter Key-Value Store)
• speziell: jeder Cluster Node benötigt ein privates /24 Netz für die
Container, welches zwischen den Nodes geroutet werden muss
• Network-overlay: flannel
• alle von intern erreichbaren „Services“ nutzen ein privates Subnetz
• um von extern auf „Services“ zugreifen zu können wird auf jedem
Cluster Node ein Port (der selbe) geöffnet
8. 8
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• physischer oder virtueller Server auf dem PODs gestartet werden
• Benötigt keine öffentliche IP Adresse, private IP ausreichend
• Auf jedem Node läuft ein „kubelet“ Daemon (nimmt API Befehle
entgegen) und ein „kube-proxy“ (routed Netzverkehr)
• Netzwerk Verkehr zwischen Nodes wird von „flanneld“ geroutet
• ...und es läuft natürlich „docker“
KOMPONENTE: NODE (AKA MINION)
9. 9
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• inhaltlich zusammenhängende Container können in einem POD
zusammengefasst werden
• Container in einem POD teilen sich den network stack und den IPC
Namespace
• Volumes werden pro POD gemountet und stehen allen Containern zur
Verfügung
• jeder POD hat eine eigene IP aus einem privaten Subnetz
KOMPONENTE: POD
10. 10
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• macht Dienste von PODs zugänglich
• „interner“ vs. „externer“ Service
• PODs werden über Selektoren automatisch zugeordnet
KOMPONENTE: SERVICE
11. 11
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• sorgt dafür das ein gewisser POD in einer gesetzten Anzahl läuft
• rescheduled abgebrochene PODs
• Kubernetes < 1.1 :
• Wird genutzt um „rolling Releases“ zu unterstützen
• Kubernetes >= 1.1 :
• Eigener „Deployment“ Typ wurde eingeführt
KOMPONENTE: REPLICATION CONTROLLER
12. 12
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• stellt einem POD (eventuell nicht flüchtigen) Speicherplatz zur
Verfügung
• Unterstützung mehrerer Backends, bspw:
• Amazon Elastic Block Store
• nfs
• iscsi
• glusterfs
• rbd (ceph)
• git
KOMPONENTE: VOLUME
13. 13
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• Methode um Nutzernamen und Passwörter einem POD zur Verfügung
zu stellen
• Daten werden als key-value Paar angegeben
• Daten dürfen nicht mehr als 1 MB gross sein
• werden an bestimmter Stelle im POD als Files gemountet:
• Key entspricht dann dem Dateiname
• Value entspricht dem Inhalt der Datei
KOMPONENTE: SECRET
14. 14
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
WAS IST KUBERNETES?
• Ressourcen können in Namespaces verpackt werden
• vorranging genutzt um Ressourcen Constraints pro Namespace
anzulegen, bspw:
• Maximale Anzahl an PODs
• Maximale Anzahl genutzter CPUs
• Maximal genutzter Speicher
KOMPONENTE: NAMESPACE
15. 15
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
ABER WIE SCHAUT DAS LIVE
AUS?
• Blog URL: http://tech-talk-blog.nine.ch
• verteilter Content über Git Volume
• kein „Single Point of Failure“
16. 16
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
VOR- UND NACHTEILE
• Networking Modell ist durch „Services“ sehr gut Clusterfähig
• API für alle Ressourcen
• Rolling Releases durch Deployments
• Unterstützung von glusterFS, NFS oder RBD als verteilten Volume
Storage
VORTEILE
17. 17
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
VOR- UND NACHTEILE
• Keine Firewall Regeln definierbar
• Jeder POD hat auf jeden Service oder anderen POD Netzwerk
Zugriff
• Es existiert Feature Request um zumindest Namespaces
voneinander abzugrenzen
• Maintenance Modus für einen Node umständlich
• Externe Services (bspw. Datenbanken) werden von Node-IP aus
angesprochen, aber auf einem Node laufen mehrere PODs...wie
Firewall auf bspw. DB einstellen?
NACHTEILE
18. 18
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
AUSBLICK
• Nine verfolgt die Entwicklung von Kubernetes weiter
• Deployment für Kunden vereinfachen
• Docker bringt weitere Security Features (laut Roadmap):
• Seccomp (Entfernung von System Calls für bestimmte Prozesse)
• User Namespaces („root“ in einem Container ist nicht „root“ auf
Node)
19. 19
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
Nine Internet Solutions AG
Albisriederstr. 243a
CH-8047 Zürich
Tel +41 44 637 40 00
Fax +41 44 637 40 01
info@nine.ch
FRAGEN?
20. 20
TECHTALKTHURSDAY DOCKER / ÖFFENTLICH SEBASTIAN NICKEL Version 1.0
#TechTalkThursday
Nine Internet Solutions AG
Albisriederstr. 243a
CH-8047 Zürich
Tel +41 44 637 40 00
Fax +41 44 637 40 01
info@nine.ch
DANKE FÜR DIE
AUFMERKSAMKEIT!