Kubernetes, 2nd Edition

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

  1. Cover
  2. Über den Autor
  3. Titel
  4. Impressum
  5. Widmung
  6. Inhaltsverzeichnis
  7. Vorwort
  8. 1 Einführung
    1. 1.1 Schnelligkeit
    2. 1.1.1 Der Wert der Immutabilität
    3. 1.1.2 Deklarative Konfiguration
    4. 1.1.3 Selbstheilende Systeme
    5. 1.2 Ihren Service und Ihre Teams skalieren
    6. 1.2.1 Entkoppeln
    7. 1.2.2 Einfaches Skalieren für Anwendungen und Cluster
    8. 1.2.3 Entwicklungs-Teams mit Microservices skalieren
    9. 1.2.4 Konsistenz und Skalierung durch Separation of Concerns
    10. 1.3 Abstrahieren Sie Ihre Infrastruktur
    11. 1.4 Effizienz
    12. 1.5 Zusammenfassung
  9. 2 Container erstellen und ausführen
    1. 2.1 Container-Images
    2. 2.1.1 Das Docker-Image-Format
    3. 2.2 Anwendungs-Images mit Docker bauen
    4. 2.2.1 Dockerfiles
    5. 2.2.2 Die Image-Größe optimieren
    6. 2.2.3 Sicherheit von Images
    7. 2.3 Multistage Image Build
    8. 2.4 Images in einer Remote-Registry ablegen
    9. 2.5 Die Docker Container Runtime
    10. 2.5.1 Container mit Docker ausführen
    11. 2.5.2 Die kuard-Anwendung erforschen
    12. 2.5.3 Den Ressourcen-Einsatz begrenzen
    13. 2.6 Aufräumen
    14. 2.7 Zusammenfassung
  10. 3 Ein Kubernetes-Cluster deployen
    1. 3.1 Kubernetes auf einem öffentlichen Cloud-Provider installieren
    2. 3.1.1 Google Kubernetes Engine
    3. 3.1.2 Kubernetes mit dem Azure Kubernetes Service installieren
    4. 3.1.3 Kubernetes auf den Amazon Web Services installieren
    5. 3.1.4 Kubernetes mit minikube lokal installieren
    6. 3.2 Kubernetes in Docker ausführen
    7. 3.3 Kubernetes auf dem Raspberry Pi ausführen
    8. 3.4 Der Kubernetes-Client
    9. 3.4.1 Den Cluster-Status prüfen
    10. 3.4.2 Worker-Knoten in Kubernetes auflisten
    11. 3.5 Cluster-Komponenten
    12. 3.5.1 Kubernetes-Proxy
    13. 3.5.2 Kubernetes-DNS
    14. 3.5.3 Kubernetes-UI
    15. 3.6 Zusammenfassung
  11. 4 Häufige kubectl-Befehle
    1. 4.1 Namensräume
    2. 4.2 Kontexte
    3. 4.3 Objekte der Kubernetes-API anzeigen
    4. 4.4 Kubernetes-Objekte erstellen, aktualisieren und löschen
    5. 4.5 Objekte mit einem Label und Anmerkungen versehen
    6. 4.6 Debugging-Befehle
    7. 4.7 Autovervollständigen von Befehlen
    8. 4.8 Alternative Möglichkeiten zur Kommunikation mit Ihrem Cluster
    9. 4.9 Zusammenfassung
  12. 5 Pods
    1. 5.1 Pods in Kubernetes
    2. 5.2 In Pods denken
    3. 5.3 Das Pod-Manifest
    4. 5.3.1 Einen Pod erstellen
    5. 5.3.2 Ein Pod-Manifest schreiben
    6. 5.4 Pods starten
    7. 5.4.1 Pods auflisten
    8. 5.4.2 Pod-Details
    9. 5.4.3 Einen Pod löschen
    10. 5.5 Auf Ihren Pod zugreifen
    11. 5.5.1 Port-Forwarding einsetzen
    12. 5.5.2 Mehr Informationen aus Logs erhalten
    13. 5.5.3 Befehle in Ihrem Container mit exec ausführen
    14. 5.5.4 Dateien von und auf Container kopieren
    15. 5.6 Health-Checks
    16. 5.6.1 Liveness-Probe
    17. 5.6.2 Readiness-Probe
    18. 5.6.3 Arten von Health-Checks
    19. 5.7 Ressourcen-Management
    20. 5.7.1 Ressourcen-Anforderungen: Minimal notwendige Ressourcen
    21. 5.7.2 Den Ressourcen-Einsatz durch Grenzen beschränken
    22. 5.8 Daten mit Volumes persistieren
    23. 5.8.1 Volumes in Pods definieren
    24. 5.8.2 Volumes in Pods nutzen
    25. 5.8.3 Daten auf Remote-Speicher persistieren
    26. 5.9 Fügen Sie alles zusammen
    27. 5.10 Zusammenfassung
  13. 6 Labels und Anmerkungen
    1. 6.1 Labels
    2. 6.1.1 Labels anwenden
    3. 6.1.2 Labels anpassen
    4. 6.1.3 Label-Selektoren
    5. 6.1.4 Label-Selektoren in API-Objekten
    6. 6.1.5 Labels in der Architektur von Kubernetes
    7. 6.2 Anmerkungen
    8. 6.2.1 Anmerkungen definieren
    9. 6.3 Aufräumen
    10. 6.4 Zusammenfassung
  14. 7 Service-Discovery
    1. 7.1 Was ist Service-Discovery?
    2. 7.2 Das Service-Objekt
    3. 7.2.1 Service-DNS
    4. 7.2.2 Readiness-Checks
    5. 7.3 Über das Cluster hinausschauen
    6. 7.4 Cloud-Integration
    7. 7.5 Weitere Details
    8. 7.5.1 Endpunkte
    9. 7.5.2 Manuelle Service-Discovery
    10. 7.5.3 kube-proxy und Cluster-IPs
    11. 7.5.4 Umgebungsvariablen zur Cluster-IP
    12. 7.6 Mit anderen Umgebungen verbinden
    13. 7.7 Aufräumen
    14. 7.8 Zusammenfassung
  15. 8 HTTP Load Balancing mit Ingress
    1. 8.1 Ingress-Spec versus Ingress-Controller
    2. 8.2 Contour installieren
    3. 8.2.1 DNS konfigurieren
    4. 8.2.2 Eine lokale hosts-Datei konfigurieren
    5. 8.3 Ingress verwenden
    6. 8.3.1 Einfachste Anwendung
    7. 8.3.2 Hostnamen verwenden
    8. 8.3.3 Pfade verwenden
    9. 8.3.4 Aufräumen
    10. 8.4 Fortgeschrittenere Themen und Probleme mit Ingress
    11. 8.4.1 Mehrere Ingress-Controller laufen lassen
    12. 8.4.2 Mehrere Ingress-Objekte
    13. 8.4.3 Ingress und Namensräume
    14. 8.4.4 Path Rewriting
    15. 8.4.5 TLS
    16. 8.5 Alternative Ingress-Implementierungen
    17. 8.6 Die Zukunft von Ingress
    18. 8.7 Zusammenfassung
  16. 9 ReplicaSets
    1. 9.1 Reconciliation-Schleifen
    2. 9.2 Die Verbindung zwischen Pods und ReplicaSets
    3. 9.2.1 Bestehende Container übernehmen
    4. 9.2.2 Container in Quarantäne stecken
    5. 9.3 Mit ReplicaSets designen
    6. 9.4 Spezifikation eines ReplicaSets
    7. 9.4.1 Pod-Templates
    8. 9.4.2 Labels
    9. 9.5 Ein ReplicaSet erstellen
    10. 9.6 Ein ReplicaSet untersuchen
    11. 9.6.1 Ein ReplicaSet über einen Pod finden
    12. 9.6.2 Eine Gruppe von Pods für ein ReplicaSet finden
    13. 9.7 ReplicaSets skalieren
    14. 9.7.1 Imperatives Skalieren mit kubectl scale
    15. 9.7.2 Deklaratives Skalieren mit kubectl appy
    16. 9.7.3 Ein ReplicaSet automatisch skalieren
    17. 9.8 ReplicaSets löschen
    18. 9.9 Zusammenfassung
  17. 10 Deployments
    1. 10.1 Ihr erstes Deployment
    2. 10.1.1 Deployment-Interna
    3. 10.2 Deployments erstellen
    4. 10.3 Deployments verwalten
    5. 10.4 Deployments aktualisieren
    6. 10.4.1 Ein Deployment skalieren
    7. 10.4.2 Ein Container-Image aktualisieren
    8. 10.4.3 Rollout-History
    9. 10.5 Deployment-Strategien
    10. 10.5.1 Recreate-Strategie
    11. 10.5.2 RollingUpdate-Strategie
    12. 10.5.3 Rollouts verlangsamen, um die Service-Qualität sicherzustellen
    13. 10.6 Ein Deployment löschen
    14. 10.7 Ein Deployment überwachen
    15. 10.8 Zusammenfassung
  18. 11 DaemonSets
    1. 11.1 Der DaemonSet-Scheduler
    2. 11.2 DaemonSets erstellen
    3. 11.3 DaemonSets auf bestimmte Knoten beschränken
    4. 11.3.1 Knoten mit Labels versehen
    5. 11.3.2 Knoten-Selektoren
    6. 11.4 Ein DaemonSet aktualisieren
    7. 11.4.1 Rollierendes Update eines DaemonSet
    8. 11.5 Ein DaemonSet löschen
    9. 11.6 Zusammenfassung
  19. 12 Jobs
    1. 12.1 Das Job-Objekt
    2. 12.2 Job-Muster
    3. 12.2.1 Einmalig
    4. 12.2.2 Parallelism
    5. 12.2.3 Work-Queues
    6. 12.3 CronJobs
    7. 12.4 Zusammenfassung
  20. 13 ConfigMaps und Secrets
    1. 13.1 ConfigMaps
    2. 13.1.1 ConfigMaps erstellen
    3. 13.1.2 Eine ConfigMap verwenden
    4. 13.2 Secrets
    5. 13.2.1 Secrets erstellen
    6. 13.2.2 Secrets konsumieren
    7. 13.2.3 Private Docker-Registries
    8. 13.3 Namensbeschränkungen
    9. 13.4 ConfigMaps und Secrets managen
    10. 13.4.1 Ausgabe
    11. 13.4.2 Erstellen
    12. 13.4.3 Aktualisieren
    13. 13.5 Zusammenfassung
  21. 14 Role-Based Access Control für Kubernetes
    1. 14.1 Role-Based Access Control
    2. 14.1.1 Identität in Kubernetes
    3. 14.1.2 Rollen und Role Bindings verstehen
    4. 14.1.3 Rollen und Role Bindings in Kubernetes
    5. 14.2 Techniken zur Arbeit mit RBAC
    6. 14.2.1 Die Autorisierung mit can-i testen
    7. 14.2.2 RBAC in der Versionsverwaltung managen
    8. 14.3 Fortgeschrittene Techniken
    9. 14.3.1 Cluster-Rollen aggregieren
    10. 14.3.2 Gruppen für Bindings verwenden
    11. 14.4 Zusammenfassung
  22. 15 Storage-Lösungen in Kubernetes integrieren
    1. 15.1 Externe Services importieren
    2. 15.1.1 Services ohne Selektoren
    3. 15.1.2 Grenzen für externe Services: Health-Checking
    4. 15.2 Zuverlässige Singletons ausführen
    5. 15.2.1 Ein MySQL-Singleton ausführen
    6. 15.2.2 Dynamisches Volume-Provisioning
    7. 15.3 Kubernetes-eigenes Storage mit StatefulSets
    8. 15.3.1 Eigenschaften von StatefulSets
    9. 15.3.2 Manuell replizierte MongoDB mit StatefulSets
    10. 15.3.3 Das MongoDB-Cluster automatisch erstellen
    11. 15.3.4 Persistente Volumes und StatefulSets
    12. 15.3.5 Zum Abschluss: Readiness-Proben
    13. 15.4 Zusammenfassung
  23. 16 Kubernetes erweitern
    1. 16.1 Was bedeutet das Erweitern von Kubernetes?
    2. 16.2 Erweiterungspunkte
    3. 16.3 Patterns für Custom Resources
    4. 16.3.1 Just Data
    5. 16.3.2 Compiler
    6. 16.3.3 Operator
    7. 16.3.4 Der Einstieg
    8. 16.4 Zusammenfassung
  24. 17 Reale Anwendungen deployen
    1. 17.1 Jupyter
    2. 17.2 Parse
    3. 17.2.1 Voraussetzungen
    4. 17.2.2 Den Parse-Server bauen
    5. 17.2.3 Den Parse-Server deployen
    6. 17.2.4 Parse testen
    7. 17.3 Ghost
    8. 17.3.1 Ghost konfigurieren
    9. 17.4 Redis
    10. 17.4.1 Redis konfigurieren
    11. 17.4.2 Einen Redis-Service erstellen
    12. 17.4.3 Redis deployen
    13. 17.4.4 Mit unserem Redis-Cluster experimentieren
    14. 17.5 Zusammenfassung
  25. 18 Organisieren Sie Ihre Anwendung
    1. 18.1 Leitprinzipien
    2. 18.1.1 Dateisysteme als Source of Truth
    3. 18.1.2 Die Rolle des Code Reviews
    4. 18.1.3 Feature Gates und Guards
    5. 18.2 Ihre Anwendung in der Versionsverwaltung managen
    6. 18.2.1 Struktur im Dateisystem
    7. 18.2.2 Regelmäßige Versionen managen
    8. 18.3 Ihre Anwendung für Entwicklung, Testen und Deployment strukturieren
    9. 18.3.1 Ziele
    10. 18.3.2 Verlauf eines Releases
    11. 18.4 Ihre Anwendung durch Templates parametrisieren
    12. 18.4.1 Mit Helm und Templates parametrisieren
    13. 18.4.2 Dateisystem-Layout zur Parametrisierung
    14. 18.5 Ihre Anwendung weltweit deployen
    15. 18.5.1 Architekturen für ein weltweites Deployment
    16. 18.5.2 Ein weltweites Deployment implementieren
    17. 18.5.3 Dashboards und Monitoring für weltweite Deployments
    18. 18.6 Zusammenfassung
  26. Index

Product information

  • Title: Kubernetes, 2nd Edition
  • Author(s): Brendan Burns, Joe Beda, Kelsey Hightower
  • Release date: December 2020
  • Publisher(s): dpunkt
  • ISBN: 9783864908033