Kubernetes Eine kompakte Einführung
Long description: Einfach und schnell erklärt von den Kubernetes-Mitbegründern persönlich alles, was Sie über Kubernetes wissen müssen für Einsteiger und Admins ohne Kubernetes-Vorkenntnisse aktualisierte und erweiterte Auflage Kubernetes vereinfacht das Bauen, Deployen und Warten skal...
Autor principal: | |
---|---|
Otros Autores: | , , |
Formato: | Libro electrónico |
Idioma: | Alemán |
Publicado: |
Heidelberg :
dpunkt.verlag
2020.
|
Edición: | 2nd ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630860306719 |
Tabla de Contenidos:
- Intro
- Inhaltsverzeichnis
- Vorwort
- Kubernetes: Eine Widmung
- Wer dieses Buch lesen sollte
- Warum wir dieses Buch geschrieben haben
- Warum wir dieses Buch aktualisiert haben
- Ein Wort zu aktuellen Cloud-nativen Anwendungen
- Was Sie in diesem Buch finden
- Online-Ressourcen
- Konventionen in diesem Buch
- Tipp
- Warnung
- Der Download und Einsatz von Codebeispielen
- Wie Sie uns erreichen
- Danksagungen
- 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
- Abb. 1-1 Eine Möglichkeit, wie die verschiedenen Operations-Teams durch APIs entkoppelt sind
- 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
- Container-Layering
- 2.2 Anwendungs-Images mit Docker bauen
- 2.2.1 Dockerfiles
- Listing 2-1 package.json
- Listing 2-2 server.js
- Listing 2-3 .dockerignore
- Listing 2-4 Dockerfile
- 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
- Speicher-Ressourcen begrenzen
- CPU-Ressourcen 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
- Tipp
- 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
- Tipp
- Tipp
- 3.4.2 Worker-Knoten in Kubernetes auflisten
- 3.5 Cluster-Komponenten
- 3.5.1 Kubernetes-Proxy
- 3.5.2 Kubernetes-DNS
- Tipp
- 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
- Tipp
- 4.5 Objekte mit einem Label und Anmerkungen versehen
- 4.6 Debugging-Befehle
- Tipp
- 4.7 Autovervollständigen von Befehlen
- 4.8 Alternative Möglichkeiten zur Kommunikation mit Ihrem Cluster
- 4.9 Zusammenfassung
- 5 Pods
- Abb. 5-1 Ein Beispiel-Pod mit zwei Containern und einem gemeinsamen Dateisystem
- Tipp
- 5.1 Pods in Kubernetes
- 5.2 In Pods denken
- 5.3 Das Pod-Manifest
- Tipp
- 5.3.1 Einen Pod erstellen
- 5.3.2 Ein Pod-Manifest schreiben
- Listing 5-1 kuard-pod.yaml
- 5.4 Pods starten
- 5.4.1 Pods auflisten
- Tipp
- 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
- Tipp
- 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
- Listing 5-2 kuard-pod-health.yaml
- Tipp
- 5.6.2 Readiness-Probe
- 5.6.3 Arten von Health-Checks
- 5.7 Ressourcen-Management
- 5.7.1 Ressourcen-Anforderungen: Minimal notwendige Ressourcen
- Listing 5-3 kuard-pod-resreq.yaml
- Tipp
- Details zu den Request-Grenzen
- Tipp.
- 5.7.2 Den Ressourcen-Einsatz durch Grenzen beschränken
- Listing 5-4 kuard-pod-reslim.yaml
- 5.8 Daten mit Volumes persistieren
- 5.8.1 Volumes in Pods definieren
- Listing 5-5 kuard-pod-vol.yaml
- 5.8.2 Volumes in Pods nutzen
- Kommunikation/Synchronisation
- Cache
- Persistente Daten
- Das Host-Dateisystem mounten
- 5.8.3 Daten auf Remote-Speicher persistieren
- 5.9 Fügen Sie alles zusammen
- Listing 5-6 kuard-pod-full.yaml
- 5.10 Zusammenfassung
- 6 Labels und Anmerkungen
- 6.1 Labels
- Tipp
- Tab. 6-1 Beispiele für Labels
- 6.1.1 Labels anwenden
- Listing 6-1 alpaca-prod.yaml
- Listing 6-2 alpaca-test.yaml
- Listing 6-3 bandicoot-prod.yaml
- Listing 6-4 bandicoot-staging.yaml
- Abb. 6-1 Darstellung der Labels für unsere Deployments
- 6.1.2 Labels anpassen
- Warnung
- 6.1.3 Label-Selektoren
- Tipp
- Tab. 6-2 Selektor-Operatoren
- 6.1.4 Label-Selektoren in API-Objekten
- 6.1.5 Labels in der Architektur von Kubernetes
- 6.2 Anmerkungen
- 6.2.1 Anmerkungen definieren
- Warnung
- 6.3 Aufräumen
- 6.4 Zusammenfassung
- 7 Service-Discovery
- 7.1 Was ist Service-Discovery?
- 7.2 Das Service-Objekt
- Listing 7-1 alpaca-prod.yaml
- Listing 7-2 bandicoot-prod.yaml
- 7.2.1 Service-DNS
- 7.2.2 Readiness-Checks
- 7.3 Über das Cluster hinausschauen
- 7.4 Cloud-Integration
- Tipp
- 7.5 Weitere Details
- 7.5.1 Endpunkte
- 7.5.2 Manuelle Service-Discovery
- 7.5.3 kube-proxy und Cluster-IPs
- Abb. 7-1 Konfigurieren und Verwenden einer Cluster-IP
- Tipp
- 7.5.4 Umgebungsvariablen zur Cluster-IP
- Tab. 7-1 Umgebungsvariablen des Service
- 7.6 Mit anderen Umgebungen verbinden
- 7.7 Aufräumen
- 7.8 Zusammenfassung
- 8 HTTP Load Balancing mit Ingress
- Abb. 8-1 Eine typische Ingress-Konfiguration
- 8.1 Ingress-Spec versus Ingress-Controller
- 8.2 Contour installieren
- Tipp
- 8.2.1 DNS konfigurieren.
- 8.2.2 Eine lokale hosts-Datei konfigurieren
- 8.3 Ingress verwenden
- 8.3.1 Einfachste Anwendung
- Listing 8-1 simple-ingress.yaml
- 8.3.2 Hostnamen verwenden
- Listing 8-2 host-ingress.yaml
- 8.3.3 Pfade verwenden
- Listing 8-3 path-ingress.yaml
- 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
- Listing 8-4 tls-secret.yaml
- Listing 8-5 tls-ingress.yaml
- 8.5 Alternative Ingress-Implementierungen
- 8.6 Die Zukunft von Ingress
- 8.7 Zusammenfassung
- 9 ReplicaSets
- Tipp
- 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
- Listing 9-1 kuard-rs.yaml
- 9.4.1 Pod-Templates
- 9.4.2 Labels
- Tipp
- 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
- Tipp
- Basierend auf der CPU automatisch skalieren
- Warnung
- 9.8 ReplicaSets löschen
- 9.9 Zusammenfassung
- 10 Deployments
- Tipp
- 10.1 Ihr erstes Deployment
- 10.1.1 Deployment-Interna
- 10.2 Deployments erstellen
- Tipp
- 10.3 Deployments verwalten
- 10.4 Deployments aktualisieren
- 10.4.1 Ein Deployment skalieren
- 10.4.2 Ein Container-Image aktualisieren
- Warnung
- 10.4.3 Rollout-History
- Warnung
- 10.5 Deployment-Strategien
- 10.5.1 Recreate-Strategie
- 10.5.2 RollingUpdate-Strategie.
- Mehrere Versionen Ihres Service managen
- Abb. 10-1 Entkoppelte (links) und gekoppelte (rechts) Anwendungs-Architektur
- Ein rollierendes Update konfigurieren
- Tipp
- Tipp
- 10.5.3 Rollouts verlangsamen, um die Service-Qualität sicherzustellen
- Warnung
- Tipp
- Abb. 10-2 Der Deployment-Lebenszyklus von Kubernetes
- 10.6 Ein Deployment löschen
- 10.7 Ein Deployment überwachen
- 10.8 Zusammenfassung
- 11 DaemonSets
- 11.1 Der DaemonSet-Scheduler
- Tipp
- 11.2 DaemonSets erstellen
- Listing 11-1 fluentd.yaml
- 11.3 DaemonSets auf bestimmte Knoten beschränken
- 11.3.1 Knoten mit Labels versehen
- 11.3.2 Knoten-Selektoren
- Listing 11-2 nginx-fast-storage.yaml
- Warnung
- 11.4 Ein DaemonSet aktualisieren
- 11.4.1 Rollierendes Update eines DaemonSet
- 11.5 Ein DaemonSet löschen
- Warnung
- 11.6 Zusammenfassung
- 12 Jobs
- 12.1 Das Job-Objekt
- 12.2 Job-Muster
- Tab. 12-1 Job-Muster
- 12.2.1 Einmalig
- Listing 12-1 job-oneshot.yaml
- Tipp
- Pod-Fehler
- Listing 12-2 job-oneshot-failure1.yaml
- 12.2.2 Parallelism
- Listing 12-3 job-parallel.yaml
- 12.2.3 Work-Queues
- Abb. 12-1 Parallele Jobs
- Eine Work-Queue starten
- Listing 12-4 rs-queue.yaml
- Listing 12-5 service-queue.yaml
- Die Queue füllen
- Listing 12-6 load-queue.sh
- Den Konsumenten-Job erstellen
- Listing 12-7 job-consumers.yaml
- Aufräumen
- 12.3 CronJobs
- 12.4 Zusammenfassung
- 13 ConfigMaps und Secrets
- 13.1 ConfigMaps
- 13.1.1 ConfigMaps erstellen
- Listing 13-1 my-config.txt
- 13.1.2 Eine ConfigMap verwenden
- Listing 13-2 kuard-config.yaml
- Abb. 13-1 kuard zeigt seine Umgebung.
- Abb. 13-2 Das Verzeichnis /config aus Sicht von kuard
- 13.2 Secrets
- Warnung
- 13.2.1 Secrets erstellen
- Tipp
- Warnung
- 13.2.2 Secrets konsumieren
- Secrets-Volumes
- Listing 13-3 kuard-secret.yaml
- 13.2.3 Private Docker-Registries.
- Listing 13-4 kuard-secret-ips.yaml.