Searching...
Deutsch
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Kubernetes Patterns

Kubernetes Patterns

Reusable Elements for Designing Cloud-Native Applications
by Bilgin Ibryam 2019 266 pages
Technology
Technical
Engineering
Hören

Wichtige Erkenntnisse

1. Kubernetes: Die Grundlage für Cloud-native Anwendungen

Kubernetes ist eine Container-Orchestrierungsplattform, die die Basis für andere darauf aufbauende Plattformen bildet.

Verteilte Primitive. Kubernetes führt eine neue Reihe verteilter Primitive für den Aufbau cloud-nativer Anwendungen ein. Dazu gehören Pods (Gruppen von Containern), Services (für Netzwerk und Lastverteilung) und verschiedene Controller zur Verwaltung des Anwendungslebenszyklus. Diese Primitive bieten eine höhere Abstraktionsebene im Vergleich zu traditionellen In-Process-Bausteinen, sodass Entwickler sich auf die Anwendungslogik statt auf Infrastrukturprobleme konzentrieren können.

Deklarativer Ansatz. Kubernetes verfolgt ein deklaratives Modell, bei dem Entwickler den gewünschten Zustand ihrer Anwendungen spezifizieren und die Plattform kontinuierlich daran arbeitet, diesen Zustand aufrechtzuerhalten. Dieser Ansatz vereinfacht das Anwendungsmanagement und ermöglicht automatisierte Heilung und Skalierung. Wichtige Kubernetes-Konzepte umfassen:

  • Container: Verpackte, isolierte Einheiten von Anwendungscode und Abhängigkeiten
  • Pods: Die kleinsten deploybaren Einheiten, bestehend aus einem oder mehreren Containern
  • Services: Stabile Netzwerkknotenpunkte zum Zugriff auf Gruppen von Pods
  • Labels und Annotations: Metadaten zur Organisation und Auswahl von Ressourcen
  • Namespaces: Virtuelle Cluster zur Ressourcentrennung und Multi-Tenancy

2. Grundlegende Muster: Bausteine für containerisierte Apps

Um vollständig automatisierbar zu sein, muss eine cloud-native Anwendung hochgradig beobachtbar sein, damit ihr Zustand abgeleitet werden kann und Kubernetes erkennen kann, ob die Anwendung läuft und bereit ist, Anfragen zu bedienen.

Vorhersehbare Anforderungen. Anwendungen sollten ihre Ressourcenanforderungen und Laufzeitabhängigkeiten deklarieren. Dies ermöglicht es Kubernetes, intelligente Entscheidungen über Platzierung und Skalierung zu treffen. Wichtige Aspekte umfassen:

  • Ressourcenprofile: Spezifizierung von CPU- und Speicheranforderungen und -grenzen
  • Quality of Service (QoS) Klassen: Best-Effort, Burstable und Guaranteed
  • Pod-Priorität: Angabe der relativen Wichtigkeit von Pods

Deklarative Bereitstellung. Kubernetes bietet Mechanismen zur Aktualisierung von Anwendungen mit minimaler Ausfallzeit:

  • Rolling Updates: Allmählicher Austausch alter Pods durch neue
  • Blue-Green Deployments: Umschalten des Datenverkehrs zwischen zwei Versionen
  • Canary Releases: Allmähliche Erhöhung des Datenverkehrs zu einer neuen Version

Gesundheitsprüfungen und verwalteter Lebenszyklus. Anwendungen sollten Gesundheitsprüfungen implementieren und auf Lebenszyklusereignisse reagieren:

  • Liveness Probes: Erkennung, ob eine Anwendung läuft
  • Readiness Probes: Bestimmung, ob eine Anwendung bereit ist, Datenverkehr zu bedienen
  • Lebenszyklus-Hooks: Reaktion auf Start- und Stop-Ereignisse

3. Verhaltensmuster: Pod-Management und Service-Discovery

Das Singleton-Service-Muster stellt sicher, dass nur eine Instanz einer Anwendung gleichzeitig aktiv ist und dennoch hochverfügbar bleibt.

Job-Management. Kubernetes bietet Abstraktionen zur Verwaltung verschiedener Arten von Workloads:

  • Batch-Jobs: Für das Ausführen endlicher, abschließbarer Aufgaben
  • Periodische Jobs (CronJobs): Für geplante, wiederkehrende Aufgaben
  • Daemon-Services: Für das Ausführen von Systemdiensten auf jedem Knoten

Stateful Services. Kubernetes bietet StatefulSets zur Verwaltung von Anwendungen, die stabile Netzwerkidentitäten und persistenten Speicher erfordern:

  • Geordnete Bereitstellung und Skalierung
  • Stabile Netzwerkidentitäten
  • Persistenter Speicher pro Pod

Service-Discovery. Kubernetes bietet mehrere Mechanismen zur Service-Discovery:

  • ClusterIP-Services: Für interne Kommunikation
  • NodePort- und LoadBalancer-Services: Für externen Zugriff
  • Ingress: Für HTTP-basiertes Routing und Lastverteilung

4. Strukturmuster: Organisation von Containern innerhalb von Pods

Ein Sidecar-Container erweitert und verbessert die Funktionalität eines vorhandenen Containers, ohne ihn zu ändern.

Multi-Container-Pods. Kubernetes ermöglicht es, mehrere Container in einem einzigen Pod zu gruppieren, was verschiedene Muster ermöglicht:

  • Init-Container: Für Initialisierungsaufgaben vor dem Start des Hauptcontainers
  • Sidecars: Für die Erweiterung der Funktionalität des Hauptcontainers
  • Adapter: Für die Standardisierung der Ausgabe von heterogenen Anwendungen
  • Ambassadors: Für das Proxying der Kommunikation mit externen Diensten

Diese Muster fördern die Trennung von Anliegen, Modularität und Wiederverwendbarkeit im Anwendungsdesign. Sie ermöglichen es Entwicklern, komplexe Anwendungen aus einfacheren, einzweckorientierten Containern zu komponieren, während sie den gemeinsamen Kontext und die Ressourcen nutzen, die durch die Pod-Abstraktion bereitgestellt werden.

5. Konfigurationsmuster: Anpassung von Anwendungen für verschiedene Umgebungen

ConfigMaps und Secrets ermöglichen die Speicherung von Konfigurationsinformationen in dedizierten Ressourcenobjekten, die einfach mit der Kubernetes-API verwaltet werden können.

Externalisierte Konfiguration. Kubernetes bietet mehrere Mechanismen zur Verwaltung der Anwendungs-Konfiguration:

  • Umgebungsvariablen: Für einfache Schlüssel-Wert-Paare
  • ConfigMaps: Für nicht-sensitive Konfigurationsdaten
  • Secrets: Für sensible Informationen (z.B. Passwörter, API-Schlüssel)

Unveränderliche Konfiguration. Um Konsistenz über verschiedene Umgebungen hinweg zu gewährleisten, kann die Konfiguration in unveränderliche Container-Images verpackt werden:

  • Konfigurationscontainer: Dedizierte Images zur Speicherung von Konfigurationsdaten
  • Init-Container: Zum Kopieren der Konfiguration in gemeinsame Volumes

Konfigurationstemplates. Für komplexe Konfigurationen, die sich leicht zwischen Umgebungen unterscheiden:

  • Template-Verarbeitung: Verwendung von Tools wie Gomplate zur Generierung von Konfigurationsdateien
  • Init-Container: Zur Verarbeitung von Templates während der Pod-Initialisierung

Diese Muster ermöglichen es Entwicklern, die Konfiguration vom Anwendungscode zu trennen, die Portabilität zu fördern und das Risiko umgebungsspezifischer Probleme zu verringern.

6. Erweiterte Muster: Erweiterung von Kubernetes und Verwaltung komplexer Workloads

Ein Operator ist ein Kubernetes-Controller, der zwei Domänen versteht: Kubernetes und etwas anderes. Durch die Kombination von Wissen aus beiden Bereichen kann er Aufgaben automatisieren, die normalerweise einen menschlichen Operator erfordern, der beide Domänen versteht.

Controller und Operatoren. Kubernetes kann erweitert werden, um komplexe Anwendungen zu verwalten:

  • Controller: Zur Implementierung benutzerdefinierter Verhaltensweisen basierend auf Ressourcenänderungen
  • Operatoren: Zur Kodierung domänenspezifischen Wissens und Automatisierung komplexer Operationen
  • Custom Resource Definitions (CRDs): Zur Definition neuer Ressourcentypen

Frameworks und Tools. Mehrere Projekte erleichtern die Entwicklung von Controllern und Operatoren:

  • Operator Framework: Zum Erstellen von Go-basierten Operatoren
  • Kubebuilder: Zum Gerüstbau und zur Verwaltung von Operator-Projekten
  • Metacontroller: Zur Implementierung von Operatoren in jeder Sprache

Diese Muster ermöglichen es Entwicklern, die Funktionalität von Kubernetes zu erweitern und komplexe, anwendungsspezifische Operationen innerhalb des Clusters zu automatisieren.

7. Skalierung und Aufbau: Elastische Anwendungen und In-Cluster-Image-Erstellung

Autoscaling in Kubernetes ermöglicht es uns, eine variable Anwendungskapazität zu definieren, die nicht festgelegt ist, sondern stattdessen sicherstellt, dass gerade genug Kapazität vorhanden ist, um eine unterschiedliche Last zu bewältigen.

Elastische Skalierung. Kubernetes bietet mehrere Mechanismen zur Skalierung von Anwendungen:

  • Horizontal Pod Autoscaling (HPA): Anpassung der Anzahl der Pod-Replikate
  • Vertical Pod Autoscaling (VPA): Änderung der Ressourcenanforderungen und -grenzen
  • Cluster-Autoscaling: Hinzufügen oder Entfernen von Knoten basierend auf dem Ressourcenbedarf

Image-Erstellung. Kubernetes kann verwendet werden, um Container-Images innerhalb des Clusters zu erstellen:

  • OpenShift Build: Ein integriertes System zur Erstellung von Images mit verschiedenen Strategien
  • Knative Build: Ein Kubernetes-natives Build-Framework
  • Daemonless Builds: Tools wie img, buildah und Kaniko zur rootlosen Image-Erstellung

Diese Muster ermöglichen es Entwicklern, elastische, selbstanpassende Anwendungen zu erstellen und den Image-Erstellungsprozess zu optimieren, indem sie die Planungs- und Ressourcenmanagement-Fähigkeiten von Kubernetes nutzen.

Last updated:

Rezensionen

4.31 out of 5
Average of 100+ ratings from Goodreads and Amazon.

Kubernetes Patterns erhält überwiegend positive Bewertungen, wobei die Leser den fesselnden Inhalt, die klare Struktur und die praktischen Beispiele loben. Viele finden es wertvoll, um Kubernetes-Konzepte und Best Practices zu verstehen. Einige Rezensenten schätzen den Ansatz des Buches zur Erklärung von Mustern, während andere der Meinung sind, dass bestimmte "Muster" nur grundlegende Kubernetes-Funktionen sind. Das Buch wird Entwicklern und Systemadministratoren empfohlen, die ein tieferes Verständnis von Kubernetes anstreben, obwohl es für erfahrene Praktiker möglicherweise nicht so nützlich ist. Insgesamt wird es als hilfreiche Ressource für den Aufbau cloud-nativer Anwendungen betrachtet.

Über den Autor

Bilgin Ibryam ist ein versierter Autor und Experte für cloud-native Technologien, insbesondere Kubernetes. Er verfügt über umfangreiche Erfahrung in der Implementierung cloud-nativer Plattformen für Unternehmenskunden, was sich in seinen Schriften widerspiegelt. Ibryams Arbeit wird für ihre Klarheit und die Fähigkeit, komplexe Konzepte zu vereinfachen, gelobt. Er hat "Kubernetes Patterns" mitverfasst, mit dem Ziel, eine Ressource zu schaffen, die dem Gang of Four Design Patterns Buch ähnelt, jedoch für Container-Orchestrierung. Ibryams Fachwissen und praxisorientierter Ansatz haben ihn zu einer respektierten Stimme in der Kubernetes-Community gemacht und helfen Entwicklern und Ingenieuren, cloud-native Lösungen besser zu verstehen und umzusetzen.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.