Facebook Pixel
Searching...
Español
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
por Bilgin Ibryam 2019 266 páginas
4.32
100+ calificaciones
Escuchar
Listen to Summary

Puntos clave

1. Kubernetes: La Fundación para Aplicaciones Nativas de la Nube

Kubernetes es una plataforma de orquestación de contenedores que forma la base de otras plataformas construidas sobre ella.

Primitivas distribuidas. Kubernetes introduce un nuevo conjunto de primitivas distribuidas para construir aplicaciones nativas de la nube. Estas incluyen Pods (grupos de contenedores), Servicios (para redes y balanceo de carga) y varios controladores para gestionar el ciclo de vida de las aplicaciones. Estas primitivas proporcionan un nivel de abstracción más alto en comparación con los bloques de construcción tradicionales, permitiendo a los desarrolladores centrarse en la lógica de la aplicación en lugar de en las preocupaciones de infraestructura.

Enfoque declarativo. Kubernetes adopta un modelo declarativo donde los desarrolladores especifican el estado deseado de sus aplicaciones, y la plataforma trabaja continuamente para mantener ese estado. Este enfoque simplifica la gestión de aplicaciones y permite la curación y escalado automatizados. Los conceptos clave de Kubernetes incluyen:

  • Contenedores: Unidades empaquetadas e aisladas de código de aplicación y dependencias
  • Pods: Las unidades desplegables más pequeñas, que consisten en uno o más contenedores
  • Servicios: Puntos finales de red estables para acceder a grupos de Pods
  • Etiquetas y Anotaciones: Metadatos para organizar y seleccionar recursos
  • Namespaces: Clústeres virtuales para aislamiento de recursos y multi-tenencia

2. Patrones Fundamentales: Bloques de Construcción para Aplicaciones Contenerizadas

Para ser completamente automatizable, una aplicación nativa de la nube debe ser altamente observable, permitiendo que su estado se infiera para que Kubernetes pueda detectar si la aplicación está activa y si está lista para atender solicitudes.

Demandas predecibles. Las aplicaciones deben declarar sus requisitos de recursos y dependencias en tiempo de ejecución. Esto permite a Kubernetes tomar decisiones inteligentes sobre la ubicación y el escalado. Los aspectos clave incluyen:

  • Perfiles de recursos: Especificando solicitudes y límites de CPU y memoria
  • Clases de Calidad de Servicio (QoS): Mejor Esfuerzo, Burstable y Garantizada
  • Prioridad de Pods: Indicando la importancia relativa de los Pods

Despliegue declarativo. Kubernetes proporciona mecanismos para actualizar aplicaciones con un tiempo de inactividad mínimo:

  • Actualizaciones continuas: Reemplazando gradualmente Pods antiguos por nuevos
  • Despliegues Blue-Green: Cambiando el tráfico entre dos versiones
  • Lanzamientos Canary: Aumentando gradualmente el tráfico a una nueva versión

Sondeos de salud y ciclo de vida gestionado. Las aplicaciones deben implementar verificaciones de salud y responder a eventos del ciclo de vida:

  • Sondeos de vivacidad: Detectando si una aplicación está en funcionamiento
  • Sondeos de disponibilidad: Determinando si una aplicación está lista para atender tráfico
  • Ganchos de ciclo de vida: Respondiendo a eventos de inicio y detención

3. Patrones Comportamentales: Gestión de Pods y Descubrimiento de Servicios

El patrón de Servicio Singleton asegura que solo una instancia de una aplicación esté activa a la vez y, sin embargo, sea altamente disponible.

Gestión de trabajos. Kubernetes proporciona abstracciones para gestionar diferentes tipos de cargas de trabajo:

  • Trabajos por lotes: Para ejecutar tareas finitas y completables
  • Trabajos periódicos (CronJobs): Para tareas programadas y recurrentes
  • Servicios Daemon: Para ejecutar servicios a nivel de sistema en cada nodo

Servicios con estado. Kubernetes ofrece StatefulSets para gestionar aplicaciones que requieren identidades de red estables y almacenamiento persistente:

  • Despliegue y escalado ordenados
  • Identidades de red estables
  • Almacenamiento persistente por Pod

Descubrimiento de servicios. Kubernetes proporciona múltiples mecanismos para el descubrimiento de servicios:

  • Servicios ClusterIP: Para comunicación interna
  • Servicios NodePort y LoadBalancer: Para acceso externo
  • Ingress: Para enrutamiento y balanceo de carga basado en HTTP

4. Patrones Estructurales: Organización de Contenedores dentro de Pods

Un contenedor Sidecar extiende y mejora la funcionalidad de un contenedor preexistente sin cambiarlo.

Pods de múltiples contenedores. Kubernetes permite agrupar múltiples contenedores en un solo Pod, habilitando varios patrones:

  • Contenedores Init: Para tareas de inicialización antes de que comience el contenedor principal
  • Sidecars: Para agregar funcionalidad al contenedor principal
  • Adaptadores: Para estandarizar la salida de aplicaciones heterogéneas
  • Embajadores: Para hacer proxy de la comunicación con servicios externos

Estos patrones promueven la separación de preocupaciones, la modularidad y la reutilización en el diseño de aplicaciones. Permiten a los desarrolladores componer aplicaciones complejas a partir de contenedores más simples y de un solo propósito, aprovechando el contexto y los recursos compartidos proporcionados por la abstracción de Pod.

5. Patrones de Configuración: Adaptando Aplicaciones para Diversos Entornos

ConfigMaps y Secrets permiten el almacenamiento de información de configuración en objetos de recursos dedicados que son fáciles de gestionar con la API de Kubernetes.

Configuración externalizada. Kubernetes proporciona varios mecanismos para gestionar la configuración de aplicaciones:

  • Variables de entorno: Para pares clave-valor simples
  • ConfigMaps: Para datos de configuración no sensibles
  • Secrets: Para información sensible (por ejemplo, contraseñas, claves API)

Configuración inmutable. Para asegurar la consistencia entre entornos, la configuración puede empaquetarse en imágenes de contenedor inmutables:

  • Contenedores de configuración: Imágenes dedicadas para almacenar datos de configuración
  • Contenedores Init: Para copiar la configuración en volúmenes compartidos

Plantillas de configuración. Para configuraciones complejas que difieren ligeramente entre entornos:

  • Procesamiento de plantillas: Usando herramientas como Gomplate para generar archivos de configuración
  • Contenedores Init: Para procesar plantillas durante la inicialización del Pod

Estos patrones permiten a los desarrolladores separar la configuración del código de la aplicación, promoviendo la portabilidad y reduciendo el riesgo de problemas específicos del entorno.

6. Patrones Avanzados: Extendiendo Kubernetes y Gestionando Cargas de Trabajo Complejas

Un operador es un controlador de Kubernetes que entiende dos dominios: Kubernetes y algo más. Al combinar el conocimiento de ambas áreas, puede automatizar tareas que normalmente requieren un operador humano que comprenda ambos dominios.

Controladores y operadores. Kubernetes puede extenderse para gestionar aplicaciones complejas:

  • Controladores: Para implementar comportamientos personalizados basados en cambios de recursos
  • Operadores: Para codificar conocimiento específico del dominio y automatizar operaciones complejas
  • Definiciones de Recursos Personalizados (CRDs): Para definir nuevos tipos de recursos

Frameworks y herramientas. Varios proyectos facilitan el desarrollo de controladores y operadores:

  • Operator Framework: Para construir operadores basados en Go
  • Kubebuilder: Para crear y gestionar proyectos de operadores
  • Metacontroller: Para implementar operadores en cualquier lenguaje

Estos patrones permiten a los desarrolladores extender la funcionalidad de Kubernetes y automatizar operaciones complejas y específicas de la aplicación dentro del clúster.

7. Escalado y Construcción: Aplicaciones Elásticas y Creación de Imágenes en el Clúster

El escalado automático en Kubernetes nos permite definir una capacidad de aplicación variable que no es fija, sino que asegura suficiente capacidad para manejar diferentes cargas.

Escala elástica. Kubernetes proporciona múltiples mecanismos para escalar aplicaciones:

  • Escalado Horizontal de Pods (HPA): Ajustando el número de réplicas de Pods
  • Escalado Vertical de Pods (VPA): Modificando solicitudes y límites de recursos
  • Escalado Automático de Clúster: Agregando o eliminando nodos según la demanda de recursos

Construcción de imágenes. Kubernetes puede utilizarse para construir imágenes de contenedor dentro del clúster:

  • OpenShift Build: Un sistema integrado para construir imágenes utilizando diversas estrategias
  • Knative Build: Un marco de construcción nativo de Kubernetes
  • Construcciones sin demonios: Herramientas como img, buildah y Kaniko para la creación de imágenes sin privilegios

Estos patrones permiten a los desarrolladores crear aplicaciones elásticas y autoajustables y optimizar el proceso de construcción de imágenes aprovechando las capacidades de programación y gestión de recursos de Kubernetes.

Última actualización:

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.

Reseñas

4.32 de 5
Promedio de 100+ calificaciones de Goodreads y Amazon.

Patrones de Kubernetes recibe en su mayoría críticas positivas, con lectores que elogian su contenido atractivo, estructura clara y ejemplos prácticos. Muchos lo consideran valioso para comprender los conceptos de Kubernetes y las mejores prácticas. Algunos reseñadores aprecian el enfoque del libro para explicar los patrones, mientras que otros sienten que ciertos "patrones" son simplemente características básicas de Kubernetes. El libro es recomendado para desarrolladores y administradores de sistemas que buscan un conocimiento más profundo sobre Kubernetes, aunque puede no ser tan útil para profesionales experimentados. En general, se considera un recurso útil para construir aplicaciones nativas de la nube.

Sobre el autor

Bilgin Ibryam es un autor destacado y experto en tecnologías nativas de la nube, especialmente en Kubernetes. Cuenta con una amplia experiencia en la implementación de plataformas nativas de la nube para clientes empresariales, lo cual se refleja en su escritura. La obra de Ibryam es elogiada por su claridad y su capacidad para simplificar conceptos complejos. Coescribió "Kubernetes Patterns" con el objetivo de crear un recurso similar al libro de Patrones de Diseño de la Banda de los Cuatro, pero enfocado en la orquestación de contenedores. La experiencia y el enfoque práctico de Ibryam lo han convertido en una voz respetada en la comunidad de Kubernetes, ayudando a desarrolladores e ingenieros a comprender e implementar mejor soluciones nativas de la nube.

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 →