Facebook Pixel
Searching...
Français
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Kubernetes Patterns

Kubernetes Patterns

Reusable Elements for Designing Cloud-Native Applications
par Bilgin Ibryam 2019 266 pages
4.32
100+ évaluations
Écouter
Listen to Summary

Points clés

1. Kubernetes : La Fondation des Applications Cloud-Natives

Kubernetes est une plateforme d'orchestration de conteneurs qui constitue la base d'autres plateformes construites par-dessus.

Primitives distribuées. Kubernetes introduit un nouvel ensemble de primitives distribuées pour la création d'applications cloud-natives. Celles-ci incluent les Pods (groupes de conteneurs), les Services (pour le réseau et l'équilibrage de charge), et divers contrôleurs pour gérer le cycle de vie des applications. Ces primitives offrent un niveau d'abstraction plus élevé par rapport aux blocs de construction traditionnels en processus, permettant aux développeurs de se concentrer sur la logique applicative plutôt que sur les préoccupations d'infrastructure.

Approche déclarative. Kubernetes adopte un modèle déclaratif où les développeurs spécifient l'état souhaité de leurs applications, et la plateforme travaille continuellement pour maintenir cet état. Cette approche simplifie la gestion des applications et permet une guérison et une mise à l'échelle automatisées. Les concepts clés de Kubernetes incluent :

  • Conteneurs : Unités emballées et isolées de code applicatif et de dépendances
  • Pods : Les plus petites unités déployables, composées d'un ou plusieurs conteneurs
  • Services : Points de terminaison réseau stables pour accéder à des groupes de Pods
  • Étiquettes et annotations : Métadonnées pour organiser et sélectionner des ressources
  • Espaces de noms : Clusters virtuels pour l'isolation des ressources et la multi-location

2. Modèles Fondamentaux : Blocs de Construction pour Applications Conteneurisées

Pour être entièrement automatisable, une application cloud-native doit être hautement observable en permettant à son état d'être inféré afin que Kubernetes puisse détecter si l'application est en marche et prête à traiter des requêtes.

Exigences Prévisibles. Les applications doivent déclarer leurs besoins en ressources et leurs dépendances d'exécution. Cela permet à Kubernetes de prendre des décisions intelligentes concernant le placement et la mise à l'échelle. Les aspects clés incluent :

  • Profils de Ressources : Spécification des demandes et des limites de CPU et de mémoire
  • Classes de Qualité de Service (QoS) : Best-Effort, Burstable, et Guaranteed
  • Priorité des Pods : Indication de l'importance relative des Pods

Déploiement Déclaratif. Kubernetes fournit des mécanismes pour mettre à jour les applications avec un temps d'arrêt minimal :

  • Mises à jour progressives : Remplacement graduel des anciens Pods par de nouveaux
  • Déploiements Blue-Green : Basculement du trafic entre deux versions
  • Releases Canary : Augmentation progressive du trafic vers une nouvelle version

Sondes de Santé et Cycle de Vie Géré. Les applications doivent implémenter des vérifications de santé et répondre aux événements du cycle de vie :

  • Sondes de vivacité : Détection si une application est en cours d'exécution
  • Sondes de disponibilité : Détermination si une application est prête à traiter du trafic
  • Hooks de cycle de vie : Réponse aux événements de démarrage et d'arrêt

3. Modèles Comportementaux : Gestion des Pods et Découverte de Services

Le modèle de Service Singleton garantit qu'une seule instance d'une application est active à la fois tout en étant hautement disponible.

Gestion des Tâches. Kubernetes fournit des abstractions pour gérer différents types de charges de travail :

  • Tâches par lot : Pour exécuter des tâches finies et complétables
  • Tâches périodiques (CronJobs) : Pour des tâches planifiées et récurrentes
  • Services de démons : Pour exécuter des services de niveau système sur chaque nœud

Services avec État. Kubernetes offre des StatefulSets pour gérer les applications nécessitant des identités réseau stables et un stockage persistant :

  • Déploiement et mise à l'échelle ordonnés
  • Identités réseau stables
  • Stockage persistant par Pod

Découverte de Services. Kubernetes fournit plusieurs mécanismes pour la découverte de services :

  • Services ClusterIP : Pour la communication interne
  • Services NodePort et LoadBalancer : Pour l'accès externe
  • Ingress : Pour le routage HTTP et l'équilibrage de charge

4. Modèles Structurels : Organisation des Conteneurs au sein des Pods

Un conteneur Sidecar étend et améliore la fonctionnalité d'un conteneur préexistant sans le modifier.

Pods Multi-Conteneurs. Kubernetes permet de regrouper plusieurs conteneurs dans un seul Pod, permettant divers modèles :

  • Conteneurs d'initialisation : Pour les tâches d'initialisation avant le démarrage du conteneur principal
  • Sidecars : Pour ajouter des fonctionnalités au conteneur principal
  • Adaptateurs : Pour standardiser la sortie des applications hétérogènes
  • Ambassadeurs : Pour faire office de proxy de communication avec des services externes

Ces modèles favorisent la séparation des préoccupations, la modularité et la réutilisabilité dans la conception des applications. Ils permettent aux développeurs de composer des applications complexes à partir de conteneurs plus simples et à usage unique tout en tirant parti du contexte partagé et des ressources fournies par l'abstraction des Pods.

5. Modèles de Configuration : Adaptation des Applications à Divers Environnements

Les ConfigMaps et Secrets permettent de stocker des informations de configuration dans des objets de ressources dédiés faciles à gérer avec l'API Kubernetes.

Configuration Externalisée. Kubernetes fournit plusieurs mécanismes pour gérer la configuration des applications :

  • Variables d'environnement : Pour des paires clé-valeur simples
  • ConfigMaps : Pour les données de configuration non sensibles
  • Secrets : Pour les informations sensibles (par exemple, mots de passe, clés API)

Configuration Immutable. Pour garantir la cohérence entre les environnements, la configuration peut être emballée dans des images de conteneurs immuables :

  • Conteneurs de configuration : Images dédiées pour stocker les données de configuration
  • Conteneurs d'initialisation : Pour copier la configuration dans des volumes partagés

Modèles de Configuration. Pour des configurations complexes qui diffèrent légèrement entre les environnements :

  • Traitement des modèles : Utilisation d'outils comme Gomplate pour générer des fichiers de configuration
  • Conteneurs d'initialisation : Pour traiter les modèles lors de l'initialisation des Pods

Ces modèles permettent aux développeurs de séparer la configuration du code applicatif, favorisant la portabilité et réduisant le risque de problèmes spécifiques à l'environnement.

6. Modèles Avancés : Extension de Kubernetes et Gestion des Charges de Travail Complexes

Un opérateur est un contrôleur Kubernetes qui comprend deux domaines : Kubernetes et autre chose. En combinant la connaissance des deux domaines, il peut automatiser des tâches qui nécessitent habituellement un opérateur humain comprenant les deux domaines.

Contrôleurs et Opérateurs. Kubernetes peut être étendu pour gérer des applications complexes :

  • Contrôleurs : Pour implémenter des comportements personnalisés basés sur les changements de ressources
  • Opérateurs : Pour encoder des connaissances spécifiques au domaine et automatiser des opérations complexes
  • Définitions de Ressources Personnalisées (CRD) : Pour définir de nouveaux types de ressources

Cadres et Outils. Plusieurs projets facilitent le développement de contrôleurs et d'opérateurs :

  • Operator Framework : Pour construire des opérateurs basés sur Go
  • Kubebuilder : Pour échafauder et gérer des projets d'opérateurs
  • Metacontroller : Pour implémenter des opérateurs dans n'importe quel langage

Ces modèles permettent aux développeurs d'étendre les fonctionnalités de Kubernetes et d'automatiser des opérations complexes et spécifiques aux applications au sein du cluster.

7. Mise à l'Échelle et Construction : Applications Élastiques et Création d'Images en Cluster

L'autoscaling dans Kubernetes nous permet de définir une capacité applicative variable qui n'est pas fixe mais qui assure plutôt juste assez de capacité pour gérer une charge différente.

Échelle Élastique. Kubernetes fournit plusieurs mécanismes pour mettre à l'échelle les applications :

  • Autoscaling Horizontal des Pods (HPA) : Ajustement du nombre de répliques de Pods
  • Autoscaling Vertical des Pods (VPA) : Modification des demandes et des limites de ressources
  • Autoscaling du Cluster : Ajout ou suppression de nœuds en fonction de la demande de ressources

Construction d'Images. Kubernetes peut être utilisé pour construire des images de conteneurs au sein du cluster :

  • OpenShift Build : Un système intégré pour construire des images en utilisant diverses stratégies
  • Knative Build : Un cadre de construction natif Kubernetes
  • Constructions sans démon : Outils comme img, buildah, et Kaniko pour la création d'images sans root

Ces modèles permettent aux développeurs de créer des applications élastiques et auto-ajustables et de rationaliser le processus de construction d'images en tirant parti des capacités de planification et de gestion des ressources de Kubernetes.

Dernière mise à jour:

FAQ

What's Kubernetes Patterns about?

  • Focus on Cloud-Native Applications: Kubernetes Patterns by Bilgin Ibryam and Roland Huß is a guide to designing cloud-native applications using Kubernetes, emphasizing scalable, resilient, and manageable applications.
  • Reusable Design Elements: The book highlights reusable elements for application design, offering practical solutions to common deployment challenges on Kubernetes.
  • Real-World Use Cases: It draws from real-world experiences to illustrate effective application of patterns, making it valuable for both new and experienced Kubernetes users.

Why should I read Kubernetes Patterns?

  • Enhance Kubernetes Skills: Ideal for developers aiming to deepen their understanding of Kubernetes and improve application design skills with best practices and proven patterns.
  • Learn from Experts: Written by experienced practitioners, it encapsulates lessons from various projects, providing readers with extensive knowledge in cloud-native application design.
  • Practical Guidance: The patterns are actionable and applicable to real-world scenarios, serving as a practical guide for cloud-native development.

What are the key takeaways of Kubernetes Patterns?

  • Understanding Kubernetes Concepts: Covers essential concepts like Pods, Services, and Deployments, providing a solid foundation for building robust applications.
  • Design Patterns for Apps: Introduces patterns like Predictable Demands and Health Probes, crucial for creating scalable and maintainable applications.
  • Advanced Topics: Delves into advanced patterns like Operators and Controllers, essential for extending Kubernetes functionality and managing complex applications.

What are the foundational patterns discussed in Kubernetes Patterns?

  • Predictable Demands: Emphasizes declaring resource requirements for containers to help Kubernetes make informed scheduling decisions.
  • Declarative Deployment: Focuses on deployment strategies like Rolling Updates and Blue-Green Deployments for managing application updates with minimal downtime.
  • Health Probes: Discusses implementing liveness and readiness probes for monitoring application health, ensuring only healthy instances serve traffic.

How does Kubernetes Patterns define a Job and its purpose?

  • Batch Job Definition: A Job manages the execution of Pods until a specified number successfully terminate, designed for finite tasks needing reliable completion.
  • Reliability and Scalability: Ensures tasks are executed to completion by automatically restarting Pods as needed, suitable for data processing or batch jobs.
  • Parallel Execution: Jobs can run multiple Pods in parallel, allowing efficient processing of tasks divided into smaller, independent units.

What is the significance of the DaemonSet pattern in Kubernetes Patterns?

  • Infrastructure-Focused Pods: Deploys Pods on every node or specific subsets, providing essential infrastructure services like logging or monitoring.
  • Automatic Management: Manages the lifecycle of Pods automatically, simplifying infrastructure service management in a Kubernetes cluster.
  • Node-Specific Operations: Useful for applications needing node-specific operations, such as accessing local storage or monitoring node health.

How does Kubernetes Patterns explain the Singleton Service pattern?

  • Single Active Instance: Ensures only one instance of a service is active, crucial for tasks like scheduled jobs or message processing.
  • High Availability: Maintains a single active instance while emphasizing high availability using controllers like StatefulSets or ReplicaSets.
  • Service Discovery: Uses headless Services for stable network identities, ensuring consistent access to the singleton service.

What are the advanced patterns covered in Kubernetes Patterns?

  • Operators: Extends Kubernetes functionality by managing complex applications through custom controllers, automating deployment and scaling.
  • Elastic Scale: Discusses horizontal and vertical scaling strategies, using features like Horizontal Pod Autoscaling for dynamic resource adjustment.
  • Image Builder: Focuses on creating container images within the Kubernetes cluster, enhancing efficiency and reducing complexity.

What is the Downward API in Kubernetes Patterns?

  • Metadata Injection: Allows Kubernetes to inject Pod metadata into applications as environment variables or files, promoting self-awareness.
  • Dynamic and Static Data: Provides dynamic data like Pod IP and static data like resource limits, crucial for logging and monitoring.
  • Kubernetes-Agnostic Applications: Enables applications to remain agnostic to Kubernetes, promoting portability and reusability.

How does the Init Container pattern work in Kubernetes Patterns?

  • Separation of Concerns: Allows initialization tasks to be separated from main application containers, handling tasks like setting up permissions independently.
  • Sequential Execution: Init Containers run in sequence, ensuring each completes before the next starts, guaranteeing readiness for the main application.
  • Resource Sharing: Shares network namespace and storage volumes with application containers, simplifying environment preparation.

What is the Sidecar pattern in Kubernetes Patterns?

  • Enhancing Functionality: Involves adding a secondary container to a Pod to enhance or extend the primary container's functionality.
  • Common Use Cases: Used for logging, monitoring, or proxying requests, allowing the main application to focus on core functionality.
  • Collaboration Between Containers: Facilitates resource sharing and communication within the same Pod, leading to efficient applications.

How does Horizontal Pod Autoscaling work in Kubernetes Patterns?

  • Dynamic Scaling: Automatically adjusts Pod replicas based on CPU utilization or other metrics, ensuring applications handle varying loads.
  • Configuration Requirements: Requires defined resource requests and a running metrics server for informed scaling decisions.
  • Continuous Monitoring: Monitors specified metrics and adjusts replicas, maintaining optimal resource utilization and performance.

Avis

4.32 sur 5
Moyenne de 100+ évaluations de Goodreads et Amazon.

Kubernetes Patterns reçoit majoritairement des avis positifs, les lecteurs louant son contenu captivant, sa structure claire et ses exemples pratiques. Beaucoup le trouvent précieux pour comprendre les concepts et les meilleures pratiques de Kubernetes. Certains apprécient l'approche du livre pour expliquer les modèles, tandis que d'autres estiment que certains "modèles" ne sont que des fonctionnalités de base de Kubernetes. Le livre est recommandé aux développeurs et aux administrateurs système cherchant à approfondir leurs connaissances de Kubernetes, bien qu'il puisse être moins utile pour les praticiens expérimentés. Dans l'ensemble, il est considéré comme une ressource utile pour construire des applications cloud-native.

À propos de l'auteur

Bilgin Ibryam est un auteur accompli et un expert en technologies cloud-native, en particulier Kubernetes. Il possède une vaste expérience dans la mise en œuvre de plateformes cloud-native pour des clients d'entreprise, ce qui se reflète dans ses écrits. Le travail d'Ibryam est salué pour sa clarté et sa capacité à simplifier des concepts complexes. Il a coécrit "Kubernetes Patterns" dans le but de créer une ressource semblable au livre "Design Patterns" du Gang of Four, mais pour l'orchestration de conteneurs. L'expertise et l'approche pratique d'Ibryam ont fait de lui une voix respectée dans la communauté Kubernetes, aidant les développeurs et les ingénieurs à mieux comprendre et mettre en œuvre des solutions cloud-native.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on May 1,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...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..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →