Как настроить горизонтальный автоскейлер для подов на физическом сервере?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Horizontal Pod Autoscaler (HPA) автоматически масштабирует количество подов в Deployments или StatefulSets на основе наблюдаемой загрузки CPU или других метрик. На физическом сервере, если это единственный узел кластера Kubernetes или часть многоузлового кластера, процесс настройки аналогичен:
-
Проверка предусловий:
- Установлен и настроен кластер Kubernetes (kops, kubeadm, manual setup).
- Развернут и настроен Metrics Server для сбора метрик использования ресурсов подами.
-
Настройка Metrics Server: Ensure the Metrics Server is running:
# Check if metrics-server is running kubectl get apiservice v1beta1.metrics.k8s.io -o yamlIf not installed, deploy it. For example, using Helm or official manifests.
-
Создание Deployment (если еще нет): Создайте Deployment для вашего приложения. Например:
// deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: my-image resources: requests: // Важно установить запросы на ресурсы cpu: "100m" memory: "128Mi" limits: // Рекомендуется установить лимиты cpu: "200m" memory: "256Mi" -
Создание Horizontal Pod Autoscaler: Создайте объект HPA, который свяжет его с вашим Deployment. Вы можете указать целевую загрузку CPU или использовать кастомные метрики.
- На основе CPU:
// hpa.yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 1 // Минимальное количество подов maxReplicas: 5 // Максимальное количество подов targetCPUUtilizationPercentage: 50 // Целевая загрузка CPU в процентах - На основе кастомных метрик (требуется адаптер метрик, e.g., Prometheus Adapter):
// hpa-custom-metrics.yaml apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa-custom spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: my_custom_metric target: type: AverageValue averageValue: 10
- На основе CPU:
-
Применение конфигурации: Примените манифесты Deployment и HPA с помощью
kubectl apply -f <filename>.# Apply deployment kubectl apply -f deployment.yaml # Apply HPA kubectl apply -f hpa.yaml -
Проверка статуса HPA: Проверьте статус HPA, чтобы убедиться, что он создан и контролирует ваш Deployment.
# Get HPA status kubectl get hpa my-app-hpaВывод покажет текущее количество подов, целевое количество подов, текущую загрузку метрики и статус масштабирования.
-
Мониторинг: Мониторьте поведение HPA, изменяя нагрузку на приложение, чтобы увидеть, как он автоматически масштабирует поды.
На физическом сервере, который является узлом Kubernetes, HPA работает так же, как и в других средах, полагаясь на метрики, предоставляемые Metric Server, для определения необходимости масштабирования. Важно правильно настроить запросы на ресурсы в манифесте Deployment, так как HPA на основе CPU использует эти запросы для расчета целевого использования.