Горизонтальне автомасштабування подів

Налаштування горизонтального автомасштабування подів з вашим OpenTelemetry Collector

Колектори, що управляються OpenTelemetry Operator, мають вбудовану підтримку горизонтального автоматичного масштабування подів (HPA). HPA збільшує або зменшує кількість реплік (копій) ваших подів Kubernetes на основі набору метрик. Зазвичай цими метриками є споживання CPU та/або памʼяті.

Якщо OpenTelemetry Operator керує функціональністю HPA для Колектора, вам не потрібно створювати окремий ресурс Kubernetes HorizontalPodAutoscaler для автоматичного масштабування вашого Колектора.

Оскільки HPA застосовується тільки до StatefulSets і Deployments в Kubernetes, переконайтеся, що spec.mode вашого Колектора є або deployment, або statefulset.

Щоб налаштувати HPA, ви повинні спочатку визначити ваші запити на ресурси та обмеження, додавши конфігурацію spec.resources до вашого YAML-файлу OpenTelemetryCollector:

resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 64Mi

Конфігурація limits вказує максимальні значення памʼяті та CPU. У цьому випадку ці обмеження становлять 100 міліядер (0,1 ядра) CPU та 128Mi (мебібайти, де 1 мебібайт == 1024 кілобайти) RAM.

Конфігурація requests вказує мінімально гарантовану кількість ресурсів, виділених для контейнера. У цьому випадку мінімальний обсяг становить 100 міліядер CPU та 64 мебібайти RAM.

Далі ви налаштовуєте правила автоматичного масштабування, додавши конфігурацію spec.autoscaler до YAML-файлу OpenTelemetryCollector:

autoscaler:
  minReplicas: 1
  maxReplicas: 2
  targetCPUUtilization: 50
  targetMemoryUtilization: 60

Якщо зібрати все разом, то початок YAML OpenTelemetryCollector має виглядати приблизно так:

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otelcol
  namespace: opentelemetry
spec:
  mode: statefulset
  image: otel/opentelemetry-collector-contrib:v0.146.1
  serviceAccount: otelcontribcol
  autoscaler:
    minReplicas: 1
    maxReplicas: 2
    targetCPUUtilization: 50
    targetMemoryUtilization: 60
  resources:
    limits:
      cpu: 100m
      memory: 128Mi
    requests:
      cpu: 100m
      memory: 64Mi

Після розгортання OpenTelemetryCollector у Kubernetes з увімкненим HPA, Оператор створює ресурс HorizontalPodAutoscaler для вашого колектора у Kubernetes. Ви можете перевірити це, виконавши

kubectl get hpa -n <your_namespace>

Якщо все спрацювало, як очікувалося, ось як має виглядати вивід:

NAME                REFERENCE                        TARGETS                         MINPODS   MAXPODS   REPLICAS   AGE
otelcol-collector   OpenTelemetryCollector/otelcol   memory: 68%/60%, cpu: 37%/50%   1         3         2          77s

Щоб отримати більш детальну інформацію, ви можете описати ваш ресурс HPA, виконавши

kubectl describe hpa <your_collector_name> -n <your_namespace>

Якщо все спрацювало, як очікувалося, ось як має виглядати вивід:

Name:                                                     otelcol-collector
Namespace:                                                opentelemetry
Labels:                                                   app.kubernetes.io/benchmark-test=otelcol-contrib
                                                          app.kubernetes.io/component=opentelemetry-collector
                                                          app.kubernetes.io/destination=dynatrace
                                                          app.kubernetes.io/instance=opentelemetry.otelcol
                                                          app.kubernetes.io/managed-by=opentelemetry-operator
                                                          app.kubernetes.io/name=otelcol-collector
                                                          app.kubernetes.io/part-of=opentelemetry
                                                          app.kubernetes.io/version=0.126.0
Annotations:                                              <none>
CreationTimestamp:                                        Mon, 02 Jun 2025 17:23:52 +0000
Reference:                                                OpenTelemetryCollector/otelcol
Metrics:                                                  ( current / target )
  resource memory on pods  (as a percentage of request):  71% (95779498666m) / 60%
  resource cpu on pods  (as a percentage of request):     12% (12m) / 50%
Min replicas:                                             1
Max replicas:                                             3
OpenTelemetryCollector pods:                              3 current / 3 desired
Conditions:
  Type            Status  Reason            Message
  ----            ------  ------            -------
  AbleToScale     True    ReadyForNewScale  recommended size matches current size
  ScalingActive   True    ValidMetricFound  the HPA was able to successfully calculate a replica count from memory resource utilization (percentage of request)
  ScalingLimited  True    TooManyReplicas   the desired replica count is more than the maximum replica count
Events:
  Type     Reason                   Age                  From                       Message
  ----     ------                   ----                 ----                       -------
  Warning  FailedGetResourceMetric  2m (x4 over 2m29s)   horizontal-pod-autoscaler  unable to get metric memory: no metrics returned from resource metrics API
  Warning  FailedGetResourceMetric  89s (x7 over 2m29s)  horizontal-pod-autoscaler  No recommendation
  Normal   SuccessfulRescale        89s                  horizontal-pod-autoscaler  New size: 2; reason: memory resource utilization (percentage of request) above target
  Normal   SuccessfulRescale        59s                  horizontal-pod-autoscaler  New size: 3; reason: memory resource utilization (percentage of request) above target

Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)