Während Docker das heiße Thema der letzten zwei Jahre ist, kam Kubernetes bisher eher leise daher. Dabei ist das von Google-Ingenieuren initiierte Projekt mindestens genau so ein Kracher und verlängert nicht umsonst sehr schnell seine Partner-Liste.
Kubernetes birgt die Möglichkeit, grundlegend zu definieren, wie wir im Zeitalter der
Cloud über Software denken. Es versucht so, große Änderungen gegenüber den Zeiten anzustoßen, als eine Softwarekomponente noch auf einem fest zugeordneten Rechner lief.
Kubernetes schafft in Verbindung mit Docker die Möglichkeit, in Projekten von Anfang an die Themen Skalierbarkeit, Load Balancing und High Availability bei geringem Aufwand mit einzuplanen. Durch seinen deklarativen Stil muss dabei vom Anwender keine Programmlogik verstanden werden, sondern der Soll-Zustand beschrieben werden. Mit dieser Idee wird einerseits die automatische Reaktion auf Hardware-Fehler Teil des Regelverhaltens.
Andererseits eröffnet sich ein Universum an Tools, sei es zur Auto-Generierung der kompletten Infrastruktur aus Code oder zum Monitoring des
Systemzustands.
Einführung in Docker
- Überblick über die Docker Architektur (Engine, Client, Images, Container)
- Konstruktion eines Beispiel-Containers
- Ausrollen eines Images auf mehrere Rechner mit dem Hub ("Docker Registry")
- Was bringt Container Orchestration?
Kubernetes Konzepte
- Gruppierung von Software-Komponenten in Pods
- Skalieren und Failover mit Replication Controllern
- Differenzierung der Maschinen mit Labels
- Load Balancing mit Services
- Behandlung des eingehenden Cluster-Datenverkehrs, Pods auf den Eingangsmaschinen, Daemon Sets
- Aufgabenverteilung mit Jobs
- Infrastructure as Code: Beschreibung des Clusters in Git einchecken
- Monitoring des Clusterbetriebs mit Heapster und dem Kubernetes Dashboard
- Sicherheit: Zugriffsberechtigungen, Service Accounts, Auditing, Risiken
- Das Container Network Interface am Beispiel von Apache Project Calico: Network as Code
- Continous Integration: Automatisierung des Cluster-Setup Prozesses
Architektur Muster in der Cloud
- Wie kann man Service Discovery in der Cloud realisieren? (Sky-DNS)
- Was gehört in ein Docker Image? (ConfigMaps)
- Wie werden Geheimnisse verteilt? (Secrets)
- Was ist Cloud Native Software? (Refactoringschritte einer Beispielanwendung)
- Wie mache ich ein Update meiner Cloud-basierten Software? (Deployments)
- Wie finde ich die Log-Nachrichten meiner Anwendung? (Log-Aggregation mit dem ELK-Stack)
- Wie entdecke ich Performance Bottlenecks? (Monitoring mit Prometheus und Grafana)
Zustand im Cluster
- Wie halte ich Zustand im Container?
- Volumes: Lokale Verzeichnisse, Netzwerkbasierte Dateisysteme (NFS, CephFS)
- Deklarative Zustandsbeschreibung
- Migration existierender Software in den Cluster
- Verwendung von Replication-basierter Software im Cluster (z.B. PostgreSQL oder ActiveMQ/replicatedLevelDB)
- Wie realisiere ich Backup in der Cloud?
Ausblick
- Vendor Lock-In? Nein, danke.
- Vergleich zwischen Docker und Rocket
- Kommende Features in Kubernetes
- Aktuelle Arbeit im Open Source Bereich
Zielgruppe
Administratoren, Entwickler, Architekten, DevOps
Vorkenntnisse
Grundlegende IT Kenntnisse. Docker und Linux Kenntnisse sind nicht notwendig.
Ziele
- Du verstehst Container Orchestration.
- Du weißt, wordurch sich "cloud native" Anwendungen auszeichnen und wie man solche entwirft.
- Du bist in der Lage, die Docker und Kubernetes in einer CI/CD Pipeline zu verwenden.
Dauer
1 Tag
Kursunterlage
Handouts aller in der Schulung präsentierten Folien.