Cloud Bursting — это архитектурная стратегия, при которой локальная (on-premises) инфраструктура интегрирована с публичным облаком, и при превышении доступных ресурсов часть нагрузки автоматически переносится во внешний облачный сегмент. Это позволяет временно расширить вычислительные мощности без необходимости закупки дополнительного оборудования.
Концепция названа метафорически: локальный ресурсный “резервуар” как бы «переполняется», и избыточная нагрузка “выплёскивается” (bursts) в облако.
Где применяется Cloud Bursting
- Пиковые нагрузки: периоды интенсивного трафика, маркетинговые кампании, запуск новых сервисов;
- Тестирование под нагрузкой: стресс-тесты, моделирование предельных условий работы систем;
- Обработка данных: периодическое выполнение ресурсоёмких задач (рендеринг, расчёты, отчётность);
- Разработка и тестирование: временные среды, не требующие постоянного размещения в on-prem.
Преимущества Cloud Bursting
- Экономичность — нет необходимости держать избыточную инфраструктуру «на случай пиков»;
- Гибкость — масштабирование происходит автоматически и только при необходимости;
- Скорость развертывания — ресурсы в облаке активируются по триггеру без длительной подготовки;
- Поддержка гибридных моделей — сочетание on-prem и public cloud в единой архитектуре;
- Повышение отказоустойчивости — облако может выступать как резервный канал обработки нагрузки.
Требования к реализации
- Низкая задержка между on-prem и облаком (канал связи, VPN, Direct Connect);
- Автоматизация: правила масштабирования, триггеры и политики (например, через Kubernetes HPA + Cluster Autoscaler + cloud provider);
- Совместимость окружений — приложения должны быть способны работать как локально, так и в облаке;
- Наблюдаемость — мониторинг, алерты и логирование должны охватывать оба сегмента инфраструктуры;
- Согласованность данных — в случае передачи состояний и данных важно обеспечить синхронизацию и согласованность.
Ограничения и риски
- Задержка — при передаче данных между локальной и облачной средой;
- Сложность конфигурации — особенно при использовании нескольких провайдеров;
- Безопасность — перенос трафика и данных требует строгой модели доступа и шифрования;
- Лицензирование — не все программные продукты допускают гибридную эксплуатацию;
- Зависимость от облачного API и провайдера — важно избегать vendor lock-in.
Примеры платформ с поддержкой Cloud Bursting
- AWS Outposts + EC2 Auto Scaling
- Azure Stack + Azure Scale Sets
- Google Anthos + GKE on-prem
- VMware Cloud Foundation + vSphere with Tanzu
- Kubernetes с внешними облачными нодами (через node pools или federation)
Cloud Bursting — это не универсальное решение, а инструмент, уместный в сценариях с переменной или предсказуемо-волатильной нагрузкой. Успешная реализация требует точной архитектурной проработки, автоматизации масштабирования и жёсткого контроля зон ответственности между локальной и облачной инфраструктурой.
Пример реализации Cloud Bursting на Kubernetes с Horizontal Pod Autoscaler (HPA), Cluster Autoscaler и autoscaling node pools в облаке, плюс схема гибридной архитектуры.
YAML: HPA + bursting в облако (GKE, EKS, AKS)
1. Horizontal Pod Autoscaler (HPA)
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: web-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: web-app minReplicas: 3 maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 65
📌 При превышении 65% CPU HPA масштабирует приложение.
2. Node Autoscaler (облако)
В GKE, EKS или AKS необходимо активировать Cluster Autoscaler, который будет добавлять ноды в облачную нод-группу при нехватке ресурсов.
Пример в Terraform (EKS):
resource "aws_eks_node_group" "burst_pool" { cluster_name = aws_eks_cluster.this.name node_group_name = "bursting" scaling_config { desired_size = 0 min_size = 0 max_size = 10 } instance_types = ["t3.medium"] labels = { workload = "burstable" } }
📌 Пул создан с
min=0
Архитектура гибридного Cloud Bursting:
┌──────────────────────────────┐ │ On-Prem Cluster │ │ ┌────────────┐ │ │ │ Web App │ │ │ │ (3 пода) │ │ │ └────┬───────┘ │ └──────┼──────────────────────┘ │ нагрузка > порога ▼ ┌────────────────────────────────────────────┐ │ Public Cloud (e.g., AWS) │ │ ┌────────────┐ ┌────────────┐ │ │ │ Web App │ ... │ Web App │ │ │ │ (autoscale)│ │ (burst) │ │ │ └────────────┘ └────────────┘ │ │ Cluster Autoscaler добавляет ноды │ └────────────────────────────────────────────┘
Важно настроить:
- Taints/Tolerations — чтобы bursting-поды шли только на облачные ноды;
- Priority Classes — чтобы не вытеснять критичные сервисы;
- Network tunnel/VPN — для low-latency доступа между on-prem и cloud;
- Log aggregation + metrics — чтобы не терять наблюдаемость на границе кластеров;
- Cost controls — чтобы bursting не стал неожиданно дорогим.
И в дополнение — полноценный bursting-ready Helm-чарт, который:
- масштабирует поды с помощью HPA,
- направляет их в облачный node pool через ,
nodeAffinity
- совместим с Cluster Autoscaler,
- и разделяет трафик с приоритетами.
Структура Helm-чарта (cloud-bursting-app/
)
cloud-bursting-app/
cloud-bursting-app/ ├── templates/ │ ├── deployment.yaml │ ├── hpa.yaml │ └── service.yaml ├── values.yaml └── Chart.yaml
values.yaml
values.yaml
replicaCount: 3 image: repository: myregistry/web-app tag: latest resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 256Mi bursting: enabled: true cloudLabelKey: workload cloudLabelValue: burstable
templates/deployment.yaml
templates/deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "cloud-bursting-app.fullname" . }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ include "cloud-bursting-app.name" . }} template: metadata: labels: app: {{ include "cloud-bursting-app.name" . }} spec: containers: - name: app image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" resources: requests: cpu: {{ .Values.resources.requests.cpu }} memory: {{ .Values.resources.requests.memory }} limits: cpu: {{ .Values.resources.limits.cpu }} memory: {{ .Values.resources.limits.memory }} {{- if .Values.bursting.enabled }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: {{ .Values.bursting.cloudLabelKey }} operator: In values: - {{ .Values.bursting.cloudLabelValue }} {{- end }}
templates/hpa.yaml
templates/hpa.yaml
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: {{ include "cloud-bursting-app.fullname" . }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: {{ include "cloud-bursting-app.fullname" . }} minReplicas: 3 maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 65
Применение:
helm install web cloud-bursting-app/ -n default
Что делает этот чарт:
- При стандартной нагрузке работает в пределах локального пула;
- При росте CPU до 65% — HPA создаёт новые поды;
- Через bursting-поды направляются в облачные узлы;
nodeAffinity
- Cluster Autoscaler в облаке добавляет ноды по мере необходимости.