Cloud Bursting (Облачное масштабирование по требованию)

⌘K

Cloud Bursting (Облачное масштабирование по требованию)

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
: он не расходует ресурсы, пока не будет нужен. HPA запускает новые поды → кластер запускает ноды.


Архитектура гибридного 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/ ├── templates/ │ ├── deployment.yaml │ ├── hpa.yaml │ └── service.yaml ├── values.yaml └── Chart.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

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

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 создаёт новые поды;
  • Через
    nodeAffinity
    bursting-поды направляются в облачные узлы;
  • Cluster Autoscaler в облаке добавляет ноды по мере необходимости.

Даже в глоссарии есть повод сэкономить

Дарим 1 месяц к году оплаты VPS. Код: NEWCOM

Месяц в подарок
COPIED
NEWCOM COPIED