Источник
Обзор книги
Материал главы основан на детальном разборе книги в блоге
Kubernetes Patterns, 2nd Edition (Паттерны Kubernetes: Шаблоны разработки собственных облачных приложений)
Авторы: Bilgin Ibryam, Roland Huß
Издательство: O'Reilly Media, 2019 (2nd Edition 2023)
Объём: 390 страниц
Каталог паттернов для K8s: foundational, behavioral, structural и configuration patterns от Bilgin Ibryam.
Оригинал
ПереводДокументальные фильмы
Связанная книга
Cloud Native
Контекст cloud-native разработки: containers, serverless, data management.
Категории паттернов
Foundational Patterns
Базовые принципы: как контейнеризировать приложения, управлять жизненным циклом и определять health checks.
Behavioral Patterns
Как приложения взаимодействуют с платформой: batch jobs, scheduled tasks, stateful workloads.
Structural Patterns
Организация контейнеров в Pod: sidecar, ambassador, adapter и другие multi-container паттерны.
Configuration Patterns
Управление конфигурацией: ConfigMaps, Secrets, immutable configuration, configuration templates.
Подкаст
Code of Architecture
Обсуждение Kubernetes Patterns в подкасте клуба Code of Architecture
Foundational Patterns
Health Probe
Механизмы для определения состояния приложения:
Liveness Probe
Жив ли процесс? Перезапуск при failure.
Readiness Probe
Готов ли принимать трафик?
Startup Probe
Для медленно стартующих приложений.
Predictable Demands
Декларация ресурсных требований для правильного scheduling:
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"Managed Lifecycle
Graceful shutdown через preStop hooks и SIGTERM handling. PostStart hooks для инициализации. Правильная обработка сигналов — критично для zero-downtime deployments.
Подкаст
Code of Architecture
Продолжение обсуждения Kubernetes Patterns в подкасте
Behavioral Patterns
Связанная книга
Site Reliability Engineering
SRE-практики для управления workloads в production.
Batch Job
Kubernetes Job для run-to-completion задач. Параллельное выполнение, retry policies, backoff limits. Идеально для data processing, migrations, reports.
Periodic Job (CronJob)
Scheduled задачи по расписанию cron. Concurrency policies: Allow, Forbid, Replace. История успешных и неуспешных jobs.
Stateful Service
StatefulSet для приложений с состоянием: databases, message queues. Stable network identities, ordered deployment, persistent storage per pod.
Service Discovery
Kubernetes Services: ClusterIP, NodePort, LoadBalancer. DNS-based discovery (service.namespace.svc.cluster.local). Headless services для StatefulSets.
Подкаст
Code of Architecture
Третья часть обсуждения Kubernetes Patterns в подкасте
Structural Patterns (Multi-Container)
Sidecar
Дополнительный контейнер расширяет функциональность основного без изменения его кода.
Ambassador
Proxy для упрощения доступа к внешним сервисам. Скрывает сложность подключения.
Adapter
Преобразует вывод приложения в стандартный формат. Полезно для legacy систем.
Init Container
Выполняется до основного контейнера. Подготовка окружения, ожидание зависимостей.
Глубокое погружение
Designing Distributed Systems
Brendan Burns детально разбирает configuration и operational паттерны.
Configuration Patterns
EnvVar Configuration
Простейший способ — environment variables. Подходит для небольшого числа параметров. Можно использовать valueFrom для ссылок на ConfigMaps/Secrets.
Configuration Resource (ConfigMap)
Хранение конфигурации отдельно от образа. Монтирование как файлы или env vars.
Immutable Configuration
Конфигурация как часть immutable image. Гарантирует consistency между environments. Требует пересборки для изменений — trade-off между safety и flexibility.
Secret Management
Kubernetes Secrets для чувствительных данных. Base64 encoding (не encryption!). Интеграция с external secret managers: Vault, AWS Secrets Manager, Azure Key Vault.
Подкаст
Code of Architecture
Обсуждение Advanced Patterns в подкасте
Advanced Patterns
Controller
Reconciliation loop: observe → diff → act. Основа всех Kubernetes controllers. Custom controllers для автоматизации operations.
Operator
Controller + CRD = domain-specific automation. Кодификация operational knowledge. Примеры: Prometheus Operator, Strimzi.
Elastic Scale
HorizontalPodAutoscaler по CPU, memory или custom metrics. VerticalPodAutoscaler для right-sizing. KEDA для event-driven scaling.
Self Awareness
Downward API для доступа к метаданным пода. Pod name, namespace, labels, annotations доступны приложению.
Связанная книга
Building Microservices
Паттерны декомпозиции и коммуникации сервисов для интервью.
Применение на System Design интервью
Полезные концепции
- Health probes для zero-downtime deployments
- Sidecar pattern для cross-cutting concerns
- StatefulSet для stateful workloads
- Init containers для dependencies
- Resource requests/limits для capacity
- HPA для auto-scaling
Вопросы, где пригодится
- «Как деплоить сервис без даунтайма?»
- «Как масштабировать stateful сервис?»
- «Как организовать service mesh?»
- «Как добавить logging/tracing?»
- «Как управлять secrets?»
