Searching...
Français
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
Écouter

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.

Last updated:

Avis

4.31 out of 5
Average of 100+ ratings from Goodreads and 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
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.