Kubernetes
Реклама. ООО «ЛитРес», ИНН: 7719571260.
Оглавление
Kelsey Hightower. Kubernetes
Kubernetes
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
1Einführung
1.1Schnelligkeit
1.1.1Der Wert der Immutabilität
1.1.2Deklarative Konfiguration
1.1.3Selbstheilende Systeme
1.2Ihren Service und Ihre Teams skalieren
1.2.1Entkoppeln
1.2.2Einfaches Skalieren für Anwendungen und Cluster
1.2.3Entwicklungs-Teams mit Microservices skalieren
1.2.4Konsistenz und Skalierung durch Separation of Concerns
1.3Abstrahieren Sie Ihre Infrastruktur
1.4Effizienz
1.5Zusammenfassung
2Container erstellen und ausführen
2.1Container-Images
2.1.1Das Docker-Image-Format
Container-Layering
2.2Anwendungs-Images mit Docker bauen
2.2.1Dockerfiles
2.2.2Die Image-Größe optimieren
2.2.3Sicherheit von Images
2.3Multistage Image Build
2.4Images in einer Remote-Registry ablegen
2.5Die Docker Container Runtime
2.5.1Container mit Docker ausführen
2.5.2Die kuard-Anwendung erforschen
2.5.3Den Ressourcen-Einsatz begrenzen
Speicher-Ressourcen begrenzen
CPU-Ressourcen begrenzen
2.6Aufräumen
2.7Zusammenfassung
3Ein Kubernetes-Cluster deployen
3.1Kubernetes auf einem öffentlichen Cloud-Provider installieren
3.1.1Google Kubernetes Engine
3.1.2Kubernetes mit dem Azure Kubernetes Service installieren
3.1.3Kubernetes auf den Amazon Web Services installieren
3.1.4Kubernetes mit minikube lokal installieren
Tipp
3.2Kubernetes in Docker ausführen
3.3Kubernetes auf dem Raspberry Pi ausführen
3.4Der Kubernetes-Client
3.4.1Den Cluster-Status prüfen
Tipp
Tipp
3.4.2Worker-Knoten in Kubernetes auflisten
3.5Cluster-Komponenten
3.5.1Kubernetes-Proxy
3.5.2Kubernetes-DNS
Tipp
3.5.3Kubernetes-UI
3.6Zusammenfassung
4Häufige kubectl-Befehle
4.1Namensräume
4.2Kontexte
4.3Objekte der Kubernetes-API anzeigen
4.4Kubernetes-Objekte erstellen, aktualisieren und löschen
Tipp
4.5Objekte mit einem Label und Anmerkungen versehen
4.6Debugging-Befehle
Tipp
4.7Autovervollständigen von Befehlen
4.8Alternative Möglichkeiten zur Kommunikation mit Ihrem Cluster
4.9Zusammenfassung
5Pods
Tipp
5.1Pods in Kubernetes
5.2In Pods denken
5.3Das Pod-Manifest
Tipp
5.3.1Einen Pod erstellen
5.3.2Ein Pod-Manifest schreiben
5.4Pods starten
5.4.1Pods auflisten
Tipp
5.4.2Pod-Details
5.4.3Einen Pod löschen
5.5Auf Ihren Pod zugreifen
5.5.1Port-Forwarding einsetzen
5.5.2Mehr Informationen aus Logs erhalten
Tipp
5.5.3Befehle in Ihrem Container mit exec ausführen
5.5.4Dateien von und auf Container kopieren
5.6Health-Checks
5.6.1Liveness-Probe
Tipp
5.6.2Readiness-Probe
5.6.3Arten von Health-Checks
5.7Ressourcen-Management
5.7.1Ressourcen-Anforderungen: Minimal notwendige Ressourcen
Tipp
Details zu den Request-Grenzen
Tipp
5.7.2Den Ressourcen-Einsatz durch Grenzen beschränken
5.8Daten mit Volumes persistieren
5.8.1Volumes in Pods definieren
5.8.2Volumes in Pods nutzen
Kommunikation/Synchronisation
Cache
Persistente Daten
Das Host-Dateisystem mounten
5.8.3Daten auf Remote-Speicher persistieren
5.9Fügen Sie alles zusammen
5.10Zusammenfassung
6Labels und Anmerkungen
6.1Labels
Tipp
6.1.1Labels anwenden
6.1.2Labels anpassen
Warnung
6.1.3Label-Selektoren
Tipp
6.1.4Label-Selektoren in API-Objekten
6.1.5Labels in der Architektur von Kubernetes
6.2Anmerkungen
6.2.1Anmerkungen definieren
Warnung
6.3Aufräumen
6.4Zusammenfassung
7Service-Discovery
7.1Was ist Service-Discovery?
7.2Das Service-Objekt
7.2.1Service-DNS
7.2.2Readiness-Checks
7.3Über das Cluster hinausschauen
7.4Cloud-Integration
Tipp
7.5Weitere Details
7.5.1Endpunkte
7.5.2Manuelle Service-Discovery
7.5.3kube-proxy und Cluster-IPs
Tipp
7.5.4Umgebungsvariablen zur Cluster-IP
7.6Mit anderen Umgebungen verbinden
7.7Aufräumen
7.8Zusammenfassung
8HTTP Load Balancing mit Ingress
8.1Ingress-Spec versus Ingress-Controller
8.2Contour installieren
Tipp
8.2.1DNS konfigurieren
8.2.2Eine lokale hosts-Datei konfigurieren
8.3Ingress verwenden
8.3.1Einfachste Anwendung
8.3.2Hostnamen verwenden
8.3.3Pfade verwenden
8.3.4Aufräumen
8.4Fortgeschrittenere Themen und Probleme mit Ingress
8.4.1Mehrere Ingress-Controller laufen lassen
8.4.2Mehrere Ingress-Objekte
8.4.3Ingress und Namensräume
8.4.4Path Rewriting
8.4.5TLS
8.5Alternative Ingress-Implementierungen
8.6Die Zukunft von Ingress
8.7Zusammenfassung
9ReplicaSets
Tipp
9.1Reconciliation-Schleifen
9.2Die Verbindung zwischen Pods und ReplicaSets
9.2.1Bestehende Container übernehmen
9.2.2Container in Quarantäne stecken
9.3Mit ReplicaSets designen
9.4Spezifikation eines ReplicaSets
9.4.1Pod-Templates
9.4.2Labels
Tipp
9.5Ein ReplicaSet erstellen
9.6Ein ReplicaSet untersuchen
9.6.1Ein ReplicaSet über einen Pod finden
9.6.2Eine Gruppe von Pods für ein ReplicaSet finden
9.7ReplicaSets skalieren
9.7.1Imperatives Skalieren mit kubectl scale
9.7.2Deklaratives Skalieren mit kubectl appy
9.7.3Ein ReplicaSet automatisch skalieren
Tipp
Basierend auf der CPU automatisch skalieren
Warnung
9.8ReplicaSets löschen
9.9Zusammenfassung
10Deployments
Tipp
10.1Ihr erstes Deployment
10.1.1Deployment-Interna
10.2Deployments erstellen
Tipp
10.3Deployments verwalten
10.4Deployments aktualisieren
10.4.1Ein Deployment skalieren
10.4.2Ein Container-Image aktualisieren
Warnung
10.4.3Rollout-History
Warnung
10.5Deployment-Strategien
10.5.1Recreate-Strategie
10.5.2RollingUpdate-Strategie
Mehrere Versionen Ihres Service managen
Ein rollierendes Update konfigurieren
Tipp
Tipp
10.5.3Rollouts verlangsamen, um die Service-Qualität sicherzustellen
Warnung
Tipp
10.6Ein Deployment löschen
10.7Ein Deployment überwachen
10.8Zusammenfassung
11DaemonSets
11.1Der DaemonSet-Scheduler
Tipp
11.2DaemonSets erstellen
11.3DaemonSets auf bestimmte Knoten beschränken
11.3.1Knoten mit Labels versehen
11.3.2Knoten-Selektoren
Warnung
11.4Ein DaemonSet aktualisieren
11.4.1Rollierendes Update eines DaemonSet
11.5Ein DaemonSet löschen
Warnung
11.6Zusammenfassung
12Jobs
12.1Das Job-Objekt
12.2Job-Muster
12.2.1Einmalig
Tipp
Pod-Fehler
12.2.2Parallelism
12.2.3Work-Queues
Eine Work-Queue starten
Die Queue füllen
Den Konsumenten-Job erstellen
Aufräumen
12.3CronJobs
12.4Zusammenfassung
13ConfigMaps und Secrets
13.1ConfigMaps
13.1.1ConfigMaps erstellen
13.1.2Eine ConfigMap verwenden
13.2Secrets
Warnung
13.2.1Secrets erstellen
Tipp
Warnung
13.2.2Secrets konsumieren
Secrets-Volumes
13.2.3Private Docker-Registries
13.3Namensbeschränkungen
Tipp
13.4ConfigMaps und Secrets managen
13.4.1Ausgabe
13.4.2Erstellen
13.4.3Aktualisieren
Aus einer Datei aktualisieren
Warnung
Neu erstellen und aktualisieren
Bestehende Version bearbeiten
Live-Updates
13.5Zusammenfassung
14Role-Based Access Control für Kubernetes
Tipp
14.1Role-Based Access Control
14.1.1Identität in Kubernetes
14.1.2Rollen und Role Bindings verstehen
14.1.3Rollen und Role Bindings in Kubernetes
Verben für Kubernetes-Rollen
Eingebaute Rollen verwenden
Automatischer Abgleich für eingebaute Rollen
Warnung
14.2Techniken zur Arbeit mit RBAC
14.2.1Die Autorisierung mit can-i testen
14.2.2RBAC in der Versionsverwaltung managen
14.3Fortgeschrittene Techniken
14.3.1Cluster-Rollen aggregieren
14.3.2Gruppen für Bindings verwenden
14.4Zusammenfassung
15Storage-Lösungen in Kubernetes integrieren
15.1Externe Services importieren
Tipp
15.1.1Services ohne Selektoren
Tipp
15.1.2Grenzen für externe Services: Health-Checking
15.2Zuverlässige Singletons ausführen
15.2.1Ein MySQL-Singleton ausführen
15.2.2Dynamisches Volume-Provisioning
Warnung
15.3Kubernetes-eigenes Storage mit StatefulSets
15.3.1Eigenschaften von StatefulSets
15.3.2Manuell replizierte MongoDB mit StatefulSets
Tipp
15.3.3Das MongoDB-Cluster automatisch erstellen
Tipp
15.3.4Persistente Volumes und StatefulSets
Tipp
15.3.5Zum Abschluss: Readiness-Proben
15.4Zusammenfassung
16Kubernetes erweitern
16.1Was bedeutet das Erweitern von Kubernetes?
16.2Erweiterungspunkte
16.3Patterns für Custom Resources
16.3.1Just Data
16.3.2Compiler
16.3.3Operator
16.3.4Der Einstieg
16.4Zusammenfassung
17Reale Anwendungen deployen
17.1Jupyter
17.2Parse
17.2.1Voraussetzungen
17.2.2Den Parse-Server bauen
17.2.3Den Parse-Server deployen
17.2.4Parse testen
17.3Ghost
17.3.1Ghost konfigurieren
Ghost und MySQL
17.4Redis
17.4.1Redis konfigurieren
17.4.2Einen Redis-Service erstellen
17.4.3Redis deployen
17.4.4Mit unserem Redis-Cluster experimentieren
17.5Zusammenfassung
18Organisieren Sie Ihre Anwendung
18.1Leitprinzipien
18.1.1Dateisysteme als Source of Truth
Tipp
18.1.2Die Rolle des Code Reviews
Tipp
18.1.3Feature Gates und Guards
Tipp
18.2Ihre Anwendung in der Versionsverwaltung managen
18.2.1Struktur im Dateisystem
Tipp
18.2.2Regelmäßige Versionen managen
Mit Branches und Tags versionieren
Tipp
Versionieren mit Verzeichnissen
18.3Ihre Anwendung für Entwicklung, Testen und Deployment strukturieren
18.3.1Ziele
18.3.2Verlauf eines Releases
Ein Entwicklungs-Tag einführen
Stages auf Versionen abbilden
18.4Ihre Anwendung durch Templates parametrisieren
18.4.1Mit Helm und Templates parametrisieren
18.4.2Dateisystem-Layout zur Parametrisierung
18.5Ihre Anwendung weltweit deployen
18.5.1Architekturen für ein weltweites Deployment
18.5.2Ein weltweites Deployment implementieren
18.5.3Dashboards und Monitoring für weltweite Deployments
18.6Zusammenfassung
Fußnoten. 1Einführung
3Ein Kubernetes-Cluster deployen
8HTTP Load Balancing mit Ingress
Index. A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Y
Z
Отрывок из книги
Brendan Burns begann seine Karriere mit einem kurzen Einsatz in der Software-Branche, bevor er sich mit einem PhD in Robotik auf die Bewegungsplanung für menschenähnliche Roboterarme konzentrierte. Darauf folgte eine kurze Zeit als Informatik-Professor. Schließlich kehrte er nach Seattle zurück und kam zu Google, wo er an der Web-Suchinfrastruktur mit einem Schwerpunkt auf Low-Latency Indexing arbeitete. Dort gründete er auch zusammen mit Joe Beda und Craig McLuckie das Kubernetes-Projekt. Brendan Burns ist aktuell Director of Engineering bei Microsoft Azure.
Joe Beda begann seine Karriere bei Microsoft am Internet Explorer (er war jung und naiv). Während der sieben Jahre bei Microsoft und der zehn Jahre bei Google hat Joe Beda an GUI-Frameworks, Echtzeit-Sprache und Chat, Telefonie, maschinellem Lernen für Anzeigen und Cloud Computing gearbeitet. Vor allem aber hat er bei Google die Google Compute Engine aus der Taufe gehoben und zusammen mit Brendan Burns und Craig McLuckie Kubernetes geschaffen. Zusammen mit McLuckie gründete Beda das Start-up Heptio, das sie an VMware verkauften und bei dem er nun Principal Engineer ist. Auf Seattle als seine Heimat ist er sehr stolz.
.....
9.2.2Container in Quarantäne stecken
9.3Mit ReplicaSets designen
.....