Book description
Es hei�t, dass Google über zwei Milliarden Anwendungscontainer pro Woche deployt. Wie ist das möglich? Diese Frage hat Google mit einem Projekt namens Kubernetes beantwortet, einem Cluster-Orchestrierer als Open Source (der auf dem firmeninternen Borg-System basiert), welcher das Bauen, Deployen und Warten skalierbarer, verteilter Systeme in der Cloud radikal vereinfacht. Dieser praktische Leitfaden zeigt Ihnen, wie Kubernetes undEvelin Wilbert die Container-Technologie Ihnen dabei helfen können, in Bezug auf Schnelligkeit, Agilität, Zuverlässigkeit und Effizienz in ganz neue Bereiche vorzudringen.
Table of contents
- Cover
- Über den Autor
- Titel
- Impressum
- Widmung
- Inhaltsverzeichnis
- Vorwort
-
1 Einführung
- 1.1 Schnelligkeit
- 1.1.1 Der Wert der Immutabilität
- 1.1.2 Deklarative Konfiguration
- 1.1.3 Selbstheilende Systeme
- 1.2 Ihren Service und Ihre Teams skalieren
- 1.2.1 Entkoppeln
- 1.2.2 Einfaches Skalieren für Anwendungen und Cluster
- 1.2.3 Entwicklungs-Teams mit Microservices skalieren
- 1.2.4 Konsistenz und Skalierung durch Separation of Concerns
- 1.3 Abstrahieren Sie Ihre Infrastruktur
- 1.4 Effizienz
- 1.5 Zusammenfassung
-
2 Container erstellen und ausführen
- 2.1 Container-Images
- 2.1.1 Das Docker-Image-Format
- 2.2 Anwendungs-Images mit Docker bauen
- 2.2.1 Dockerfiles
- 2.2.2 Die Image-Größe optimieren
- 2.2.3 Sicherheit von Images
- 2.3 Multistage Image Build
- 2.4 Images in einer Remote-Registry ablegen
- 2.5 Die Docker Container Runtime
- 2.5.1 Container mit Docker ausführen
- 2.5.2 Die kuard-Anwendung erforschen
- 2.5.3 Den Ressourcen-Einsatz begrenzen
- 2.6 Aufräumen
- 2.7 Zusammenfassung
-
3 Ein Kubernetes-Cluster deployen
- 3.1 Kubernetes auf einem öffentlichen Cloud-Provider installieren
- 3.1.1 Google Kubernetes Engine
- 3.1.2 Kubernetes mit dem Azure Kubernetes Service installieren
- 3.1.3 Kubernetes auf den Amazon Web Services installieren
- 3.1.4 Kubernetes mit minikube lokal installieren
- 3.2 Kubernetes in Docker ausführen
- 3.3 Kubernetes auf dem Raspberry Pi ausführen
- 3.4 Der Kubernetes-Client
- 3.4.1 Den Cluster-Status prüfen
- 3.4.2 Worker-Knoten in Kubernetes auflisten
- 3.5 Cluster-Komponenten
- 3.5.1 Kubernetes-Proxy
- 3.5.2 Kubernetes-DNS
- 3.5.3 Kubernetes-UI
- 3.6 Zusammenfassung
-
4 Häufige kubectl-Befehle
- 4.1 Namensräume
- 4.2 Kontexte
- 4.3 Objekte der Kubernetes-API anzeigen
- 4.4 Kubernetes-Objekte erstellen, aktualisieren und löschen
- 4.5 Objekte mit einem Label und Anmerkungen versehen
- 4.6 Debugging-Befehle
- 4.7 Autovervollständigen von Befehlen
- 4.8 Alternative Möglichkeiten zur Kommunikation mit Ihrem Cluster
- 4.9 Zusammenfassung
-
5 Pods
- 5.1 Pods in Kubernetes
- 5.2 In Pods denken
- 5.3 Das Pod-Manifest
- 5.3.1 Einen Pod erstellen
- 5.3.2 Ein Pod-Manifest schreiben
- 5.4 Pods starten
- 5.4.1 Pods auflisten
- 5.4.2 Pod-Details
- 5.4.3 Einen Pod löschen
- 5.5 Auf Ihren Pod zugreifen
- 5.5.1 Port-Forwarding einsetzen
- 5.5.2 Mehr Informationen aus Logs erhalten
- 5.5.3 Befehle in Ihrem Container mit exec ausführen
- 5.5.4 Dateien von und auf Container kopieren
- 5.6 Health-Checks
- 5.6.1 Liveness-Probe
- 5.6.2 Readiness-Probe
- 5.6.3 Arten von Health-Checks
- 5.7 Ressourcen-Management
- 5.7.1 Ressourcen-Anforderungen: Minimal notwendige Ressourcen
- 5.7.2 Den Ressourcen-Einsatz durch Grenzen beschränken
- 5.8 Daten mit Volumes persistieren
- 5.8.1 Volumes in Pods definieren
- 5.8.2 Volumes in Pods nutzen
- 5.8.3 Daten auf Remote-Speicher persistieren
- 5.9 Fügen Sie alles zusammen
- 5.10 Zusammenfassung
- 6 Labels und Anmerkungen
-
7 Service-Discovery
- 7.1 Was ist Service-Discovery?
- 7.2 Das Service-Objekt
- 7.2.1 Service-DNS
- 7.2.2 Readiness-Checks
- 7.3 Über das Cluster hinausschauen
- 7.4 Cloud-Integration
- 7.5 Weitere Details
- 7.5.1 Endpunkte
- 7.5.2 Manuelle Service-Discovery
- 7.5.3 kube-proxy und Cluster-IPs
- 7.5.4 Umgebungsvariablen zur Cluster-IP
- 7.6 Mit anderen Umgebungen verbinden
- 7.7 Aufräumen
- 7.8 Zusammenfassung
-
8 HTTP Load Balancing mit Ingress
- 8.1 Ingress-Spec versus Ingress-Controller
- 8.2 Contour installieren
- 8.2.1 DNS konfigurieren
- 8.2.2 Eine lokale hosts-Datei konfigurieren
- 8.3 Ingress verwenden
- 8.3.1 Einfachste Anwendung
- 8.3.2 Hostnamen verwenden
- 8.3.3 Pfade verwenden
- 8.3.4 Aufräumen
- 8.4 Fortgeschrittenere Themen und Probleme mit Ingress
- 8.4.1 Mehrere Ingress-Controller laufen lassen
- 8.4.2 Mehrere Ingress-Objekte
- 8.4.3 Ingress und Namensräume
- 8.4.4 Path Rewriting
- 8.4.5 TLS
- 8.5 Alternative Ingress-Implementierungen
- 8.6 Die Zukunft von Ingress
- 8.7 Zusammenfassung
-
9 ReplicaSets
- 9.1 Reconciliation-Schleifen
- 9.2 Die Verbindung zwischen Pods und ReplicaSets
- 9.2.1 Bestehende Container übernehmen
- 9.2.2 Container in Quarantäne stecken
- 9.3 Mit ReplicaSets designen
- 9.4 Spezifikation eines ReplicaSets
- 9.4.1 Pod-Templates
- 9.4.2 Labels
- 9.5 Ein ReplicaSet erstellen
- 9.6 Ein ReplicaSet untersuchen
- 9.6.1 Ein ReplicaSet über einen Pod finden
- 9.6.2 Eine Gruppe von Pods für ein ReplicaSet finden
- 9.7 ReplicaSets skalieren
- 9.7.1 Imperatives Skalieren mit kubectl scale
- 9.7.2 Deklaratives Skalieren mit kubectl appy
- 9.7.3 Ein ReplicaSet automatisch skalieren
- 9.8 ReplicaSets löschen
- 9.9 Zusammenfassung
-
10 Deployments
- 10.1 Ihr erstes Deployment
- 10.1.1 Deployment-Interna
- 10.2 Deployments erstellen
- 10.3 Deployments verwalten
- 10.4 Deployments aktualisieren
- 10.4.1 Ein Deployment skalieren
- 10.4.2 Ein Container-Image aktualisieren
- 10.4.3 Rollout-History
- 10.5 Deployment-Strategien
- 10.5.1 Recreate-Strategie
- 10.5.2 RollingUpdate-Strategie
- 10.5.3 Rollouts verlangsamen, um die Service-Qualität sicherzustellen
- 10.6 Ein Deployment löschen
- 10.7 Ein Deployment überwachen
- 10.8 Zusammenfassung
- 11 DaemonSets
- 12 Jobs
-
13 ConfigMaps und Secrets
- 13.1 ConfigMaps
- 13.1.1 ConfigMaps erstellen
- 13.1.2 Eine ConfigMap verwenden
- 13.2 Secrets
- 13.2.1 Secrets erstellen
- 13.2.2 Secrets konsumieren
- 13.2.3 Private Docker-Registries
- 13.3 Namensbeschränkungen
- 13.4 ConfigMaps und Secrets managen
- 13.4.1 Ausgabe
- 13.4.2 Erstellen
- 13.4.3 Aktualisieren
- 13.5 Zusammenfassung
-
14 Role-Based Access Control für Kubernetes
- 14.1 Role-Based Access Control
- 14.1.1 Identität in Kubernetes
- 14.1.2 Rollen und Role Bindings verstehen
- 14.1.3 Rollen und Role Bindings in Kubernetes
- 14.2 Techniken zur Arbeit mit RBAC
- 14.2.1 Die Autorisierung mit can-i testen
- 14.2.2 RBAC in der Versionsverwaltung managen
- 14.3 Fortgeschrittene Techniken
- 14.3.1 Cluster-Rollen aggregieren
- 14.3.2 Gruppen für Bindings verwenden
- 14.4 Zusammenfassung
-
15 Storage-Lösungen in Kubernetes integrieren
- 15.1 Externe Services importieren
- 15.1.1 Services ohne Selektoren
- 15.1.2 Grenzen für externe Services: Health-Checking
- 15.2 Zuverlässige Singletons ausführen
- 15.2.1 Ein MySQL-Singleton ausführen
- 15.2.2 Dynamisches Volume-Provisioning
- 15.3 Kubernetes-eigenes Storage mit StatefulSets
- 15.3.1 Eigenschaften von StatefulSets
- 15.3.2 Manuell replizierte MongoDB mit StatefulSets
- 15.3.3 Das MongoDB-Cluster automatisch erstellen
- 15.3.4 Persistente Volumes und StatefulSets
- 15.3.5 Zum Abschluss: Readiness-Proben
- 15.4 Zusammenfassung
- 16 Kubernetes erweitern
-
17 Reale Anwendungen deployen
- 17.1 Jupyter
- 17.2 Parse
- 17.2.1 Voraussetzungen
- 17.2.2 Den Parse-Server bauen
- 17.2.3 Den Parse-Server deployen
- 17.2.4 Parse testen
- 17.3 Ghost
- 17.3.1 Ghost konfigurieren
- 17.4 Redis
- 17.4.1 Redis konfigurieren
- 17.4.2 Einen Redis-Service erstellen
- 17.4.3 Redis deployen
- 17.4.4 Mit unserem Redis-Cluster experimentieren
- 17.5 Zusammenfassung
-
18 Organisieren Sie Ihre Anwendung
- 18.1 Leitprinzipien
- 18.1.1 Dateisysteme als Source of Truth
- 18.1.2 Die Rolle des Code Reviews
- 18.1.3 Feature Gates und Guards
- 18.2 Ihre Anwendung in der Versionsverwaltung managen
- 18.2.1 Struktur im Dateisystem
- 18.2.2 Regelmäßige Versionen managen
- 18.3 Ihre Anwendung für Entwicklung, Testen und Deployment strukturieren
- 18.3.1 Ziele
- 18.3.2 Verlauf eines Releases
- 18.4 Ihre Anwendung durch Templates parametrisieren
- 18.4.1 Mit Helm und Templates parametrisieren
- 18.4.2 Dateisystem-Layout zur Parametrisierung
- 18.5 Ihre Anwendung weltweit deployen
- 18.5.1 Architekturen für ein weltweites Deployment
- 18.5.2 Ein weltweites Deployment implementieren
- 18.5.3 Dashboards und Monitoring für weltweite Deployments
- 18.6 Zusammenfassung
- Index
Product information
- Title: Kubernetes, 2nd Edition
- Author(s):
- Release date: December 2020
- Publisher(s): dpunkt
- ISBN: 9783864908033
You might also like
book
Kubernetes: Up and Running, 2nd Edition
Kubernetes radically changes the way applications are built and deployed in the cloud. Since its introduction …
book
GitOps and Kubernetes
GitOps and Kubernetes introduces a radical idea—managing your infrastructure with the same Git pull requests you …
book
Kubernetes in Action
Kubernetes in Action is a comprehensive guide to effectively developing and running applications in a Kubernetes …
book
The Book of Kubernetes
Containers ensure that software runs reliably no matter where it’s deployed, and Kubernetes is the open-source …