Важливою частиною ефективного масштабування додатків у сучасних хмарних середовищах є використання Kubernetes. Kubernetes надає чудову можливість під назвою Horizontal Pod Autoscaler (HPA), яка автоматично налаштовує кількість подів у деплойменті або репліка-сеті, базуючись на реальних метриках. У цьому блозі ми розглянемо, як налаштувати і використовувати HPA на практиці.
Чому варто використовувати HPA?
Додатки часто стикаються з непередбачуваними патернами трафіку. Наприклад, інтернет-магазин може мати величезні сплески трафіку під час акцій, тоді як в періоди низької активності трафік може бути мінімальним. Ручне масштабування подів у таких випадках не є реальним.
HPA вирішує цю проблему, автоматично налаштовуючи кількість подів на основі таких метрик, як використання процесора, пам'яті або спеціальних метрик додатка. Це забезпечує:
- Оптимальне використання ресурсів
- Покращену доступність додатків
- Зменшення операційних витрат
- Мінімальне втручання людини
Масштабування веб-додатка
Уявіть, що ви запускаєте веб-додаток на Kubernetes. Ось як налаштувати HPA для динамічного оброблення трафіку.
Крок 1: Попередні вимоги
Перед використанням HPA переконайтеся, що:
- Встановлений Metrics Server: HPA потребує Metrics Server для отримання даних про використання ресурсів. Перевірте, чи він встановлений:
kubectl get deployment metrics-server -n kube-system
Якщо він не встановлений, розгорніть його:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Запити і ліміти ресурсів визначені: HPA потребує запитів ресурсів для розрахунку метрик використання.
Крок 2: Розгортання додатка
Спочатку розгорніть ваш веб-додаток. Ось приклад YAML для деплойменту:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 2
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web-app
image: nginx
resources:
requests:
cpu: "200m"
limits:
cpu: "500m"
Застосуйте деплоймент:
kubectl apply -f web-app-deployment.yaml
Крок 3: Створення HPA
Створіть ресурс HPA для масштабування вашого додатка на основі використання CPU.
Приклад YAML для HPA:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Застосуйте HPA:
kubectl apply -f web-app-hpa.yaml
Крок 4: Моніторинг і тестування масштабування
- Перевірка статусу HPA:
kubectl get hpa
Приклад виводу:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
web-app-hpa Deployment/web-app 25%/50% 2 10 2 5m
2. Перевірка роботи масштабування: Спостерігайте, як HPA динамічно коригує кількість подів:
kubectl get hpa -w
3. Перевірка кількості подів:
kubectl get pods
Крок 5: Масштабування вниз
Коли трафік знизиться, HPA автоматично зменшить кількість подів, що забезпечить ефективне використання ресурсів.
Переваги використання HPA
- Автоматичне оброблення сплесків трафіку: Забезпечує постійну продуктивність додатка під час високого попиту.
- Зменшення витрат: Масштабується вниз під час низького попиту, економлячи ресурси.
- Спрощення операцій: Уникається необхідність вручну масштабувати.
- Покращення надійності: Забезпечує, щоб ваш додаток залишався доступним і чутливим.
Висновок
Horizontal Pod Autoscaler є потужним інструментом для додатків, що працюють на Kubernetes.
Динамічно коригуючи кількість подів залежно від навантаження, HPA забезпечує, що ваш додаток зможе впоратися зі змінами попиту без необхідності ручного втручання. Завдяки HPA ви можете досягти балансу між продуктивністю, надійністю та ефективністю витрат — це необхідна умова для сучасних хмарних систем.
Налаштуйте HPA сьогодні і підніміть масштабованість вашого додатка на новий рівень!
Перекладено з: “The Ultimate Step-by-Step Guide to Using Horizontal Pod Autoscaler”