O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Kubernetes

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 und 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. Titel
  3. Impressum
  4. Widmung
  5. Inhaltsverzeichnis
  6. Vorwort
  7. 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
  8. 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 Sicherheit von Images
    6. 2.2.3 Die Image-Größe optimieren
    7. 2.3 Images in einer Remote-Registry ablegen
    8. 2.4 Die Docker Container Runtime
    9. 2.4.1 Container mit Docker ausführen
    10. 2.4.2 Die kuard-Anwendung erforschen
    11. 2.4.3 Den Ressourcen-Einsatz begrenzen
    12. 2.5 Aufräumen
    13. 2.6 Zusammenfassung
  9. 3 Ein Kubernetes-Cluster deployen
    1. 3.1 Kubernetes auf einem öffentlichen Cloud-Provider installieren
    2. 3.1.1 Google Container Service
    3. 3.1.2 Kubernetes auf dem Azure Container Service installieren
    4. 3.1.3 Kubernetes auf den Amazon Web Services installieren
    5. 3.2 Kubernetes mit minikube lokal installieren
    6. 3.3 Kubernetes auf dem Raspberry Pi ausführen
    7. 3.4 Der Kubernetes-Client
    8. 3.4.1 Den Cluster-Status prüfen
    9. 3.4.2 Worker-Knoten in Kubernetes auflisten
    10. 3.5 Cluster-Komponenten
    11. 3.5.1 Kubernetes-Proxy
    12. 3.5.2 Kubernetes-DNS
    13. 3.5.3 Kubernetes-UI
    14. 3.6 Zusammenfassung
  10. 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 Annotations versehen
    6. 4.6 Debugging-Befehle
    7. 4.7 Zusammenfassung
  11. 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
  12. 6 Labels und Annotations
    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.2 Annotations
    7. 6.2.1 Annotations definieren
    8. 6.3 Aufräumen
    9. 6.4 Zusammenfassung
  13. 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 Aufräumen
    13. 7.7 Zusammenfassung
  14. 8 ReplicaSets
    1. 8.1 Reconciliation-Schleifen
    2. 8.2 Die Verbindung zwischen Pods und ReplicaSets
    3. 8.2.1 Bestehende Container übernehmen
    4. 8.2.2 Container in Quarantäne stecken
    5. 8.3 Mit ReplicaSets designen
    6. 8.4 Spezifikation eines ReplicaSets
    7. 8.4.1 Pod-Templates
    8. 8.4.2 Labels
    9. 8.5 Ein ReplicaSet erstellen
    10. 8.6 Ein ReplicaSet untersuchen
    11. 8.6.1 Ein ReplicaSet über einen Pod finden
    12. 8.6.2 Eine Gruppe von Pods für ein ReplicaSet finden
    13. 8.7 ReplicaSets skalieren
    14. 8.7.1 Imperatives Skalieren mit kubectl scale
    15. 8.7.2 Deklaratives Skalieren mit kubectl appy
    16. 8.7.3 Ein ReplicaSet automatisch skalieren
    17. 8.8 ReplicaSets löschen
    18. 8.9 Zusammenfassung
  15. 9 DaemonSets
    1. 9.1 Der DaemonSet-Scheduler
    2. 9.2 DaemonSets erstellen
    3. 9.3 DaemonSets auf bestimmte Knoten beschränken
    4. 9.3.1 Knoten mit Labels versehen
    5. 9.3.2 Knoten-Selektoren
    6. 9.4 Ein DaemonSet aktualisieren
    7. 9.4.1 Ein DaemonSet durch das Löschen der einzelnen Pods aktualisieren
    8. 9.4.2 Rollierendes Update eines DaemonSet
    9. 9.5 Ein DaemonSet löschen
    10. 9.6 Zusammenfassung
  16. 10 Jobs
    1. 10.1 Das Job-Objekt
    2. 10.2 Job-Muster
    3. 10.2.1 Einmalig
    4. 10.2.2 Parallelism
    5. 10.2.3 Work-Queues
    6. 10.3 Zusammenfassung
  17. 11 ConfigMaps und Secrets
    1. 11.1 ConfigMaps
    2. 11.1.1 ConfigMaps erstellen
    3. 11.1.2 Eine ConfigMap verwenden
    4. 11.2 Secrets
    5. 11.2.1 Secrets erstellen
    6. 11.2.2 Secrets konsumieren
    7. 11.2.3 Private Docker-Registries
    8. 11.3 Namensbeschränkungen
    9. 11.4 ConfigMaps und Secrets managen
    10. 11.4.1 Ausgabe
    11. 11.4.2 Erstellen
    12. 11.4.3 Aktualisieren
    13. 11.5 Zusammenfassung
  18. 12 Deployments
    1. 12.1 Ihr erstes Deployment
    2. 12.1.1 Deployment-Interna
    3. 12.2 Deployments erstellen
    4. 12.3 Deployments verwalten
    5. 12.4 Deployments aktualisieren
    6. 12.4.1 Ein Deployment skalieren
    7. 12.4.2 Ein Container-Image aktualisieren
    8. 12.4.3 Rollout-History
    9. 12.5 Deployment-Strategien
    10. 12.5.1 Recreate-Strategie
    11. 12.5.2 RollingUpdate-Strategie
    12. 12.5.3 Rollouts verlangsamen, um die Service-Qualität sicherzustellen
    13. 12.6 Ein Deployment löschen
    14. 12.7 Zusammenfassung
  19. 13 Storage-Lösungen in Kubernetes integrieren
    1. 13.1 Externe Services importieren
    2. 13.1.1 Services ohne Selektoren
    3. 13.1.2 Grenzen für externe Services: Health-Checking
    4. 13.2 Zuverlässige Singletons ausführen
    5. 13.2.1 Ein MySQL-Singleton ausführen
    6. 13.2.2 Dynamisches Volume-Provisioning
    7. 13.3 Kubernetes-eigenes Storage mit StatefulSets
    8. 13.3.1 Eigenschaften von StatefulSets
    9. 13.3.2 Manuell replizierte MongoDB mit StatefulSets
    10. 13.3.3 Das MongoDB-Cluster automatisch erstellen
    11. 13.3.4 Persistente Volumes und StatefulSets
    12. 13.3.5 Zum Abschluss: Readiness-Proben
    13. 13.4 Zusammenfassung
  20. 14 Reale Anwendungen deployen
    1. 14.1 Parse
    2. 14.1.1 Voraussetzungen
    3. 14.1.2 Den Parse-Server bauen
    4. 14.1.3 Den Parse-Server deployen
    5. 14.1.4 Parse testen
    6. 14.2 Ghost
    7. 14.2.1 Ghost konfigurieren
    8. 14.3 Redis
    9. 14.3.1 Redis konfigurieren
    10. 14.3.2 Einen Redis-Service erstellen
    11. 14.3.3 Redis deployen
    12. 14.3.4 Mit unserem Redis-Cluster experimentieren
    13. 14.4 Zusammenfassung
  21. Anhang A Ein Kubernetes-Cluster aus Raspberry Pis bauen
  22. Index
  23. Fußnoten