Демистификация горизонтального автомасштабирования модулей (HPA): масштабируйте рабочие нагрузки Kubernetes как профессионал

Введение

В мире контейнеризации и Kubernetes крайне важно обеспечить эффективное использование ресурсов и оптимальную производительность. Одним из мощных инструментов, который помогает добиться этого, является Horizontal Pod Autoscaler (HPA). В этом сообщении блога мы углубимся в концепцию HPA, поймем, как он работает, и рассмотрим различные методы его использования для динамического масштабирования рабочих нагрузок Kubernetes.

Что такое горизонтальное автомасштабирование модулей (HPA)?

Горизонтальный автомасштабирование модулей — это функция Kubernetes, которая автоматически регулирует количество реплик (модулей) в развертывании на основе наблюдаемой загрузки ЦП или других пользовательских показателей. Это гарантирует, что ваше приложение сможет обрабатывать различные нагрузки за счет увеличения или уменьшения количества модулей.

Как работает HPA?

HPA отслеживает загрузку ЦП или специальные показатели ваших модулей и сравнивает их с заданным целевым использованием. Когда наблюдаемое использование превышает целевое значение, HPA запускает событие масштабирования для добавления дополнительных реплик. И наоборот, если загрузка падает ниже целевого значения, HPA уменьшает количество реплик.

Методы использования горизонтального автомасштабирования модулей

  1. Масштабирование в зависимости от загрузки ЦП

Наиболее распространенный метод автоматического масштабирования с помощью HPA основан на загрузке ЦП. Вы можете установить целевой процент использования ЦП, и HPA автоматически скорректирует количество реплик для поддержания этого целевого показателя.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 80

В этом примере HPA масштабирует развертывание «моего развертывания» от 2 до 10 реплик, чтобы поддерживать среднюю загрузку ЦП на уровне 80 %.

  1. Автомасштабирование на основе специальных показателей

Помимо загрузки ЦП вы также можете масштабировать модули на основе пользовательских показателей. Это позволяет вам точно настроить поведение масштабирования в соответствии с конкретными потребностями вашего приложения.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Pods
    pods:
      metricName: custom_metric
      target:
        type: AverageValue
        averageValue: 50

В этом примере HPA масштабирует развертывание «моего развертывания» от 2 до 10 реплик, чтобы поддерживать среднее значение специальной метрики 50.

  1. Объединение нескольких показателей

HPA также поддерживает масштабирование на основе нескольких показателей одновременно. Это позволяет вам создавать более сложные правила масштабирования, соответствующие требованиям вашего приложения.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 80
  - type: Pods
    pods:
      metricName: custom_metric
      target:
        type: AverageValue
        averageValue: 50

В этом примере HPA масштабируется одновременно на основе использования ЦП и специального показателя.

Заключение

Горизонтальное автомасштабирование модулей (HPA) – это мощная функция Kubernetes, которая обеспечивает автоматическое масштабирование рабочих нагрузок приложений. Используя HPA, вы можете обеспечить оптимальное использование ресурсов, справляться с различными нагрузками и повысить общую производительность ваших развертываний Kubernetes. Независимо от того, выбираете ли вы масштабирование на основе использования ЦП, пользовательских показателей или даже их комбинации, HPA предоставляет гибкий и динамичный подход для эффективного управления рабочими нагрузками Kubernetes.

Помните, что с HPA вы можете масштабироваться как профессионал в мире Kubernetes!