Этот проект включает в себя Kubernetes манифест, предназначенный для управления веб-приложением в мультизональном кластере Kubernetes. Манифест разработан с учетом специфических требований к производительности, надежности и эффективности использования ресурсов.
Было поставлено задание разработать Kubernetes манифест для веб-приложения, удовлетворяющего следующим условиям:
- Работа в мультизональном кластере (три зоны) с пятью узлами.
- Время инициализации приложения составляет около 5-10 секунд.
- По результатам нагрузочного теста известно, что оптимальное количество подов для справления с пиковой нагрузкой - 4.
- На начальном этапе работы приложение требует больше ресурсов CPU, в дальнейшем потребление стабилизируется на уровне 0.1 CPU.
- Постоянное потребление памяти на уровне 128M.
- Наличие дневного цикла по нагрузке - пиковые нагрузки днем, существенно меньше запросов ночью.
- Требования к максимальной отказоустойчивости и минимизации потребления ресурсов.
Реализованное решение включает следующие компоненты:
- Namespace: Изоляция ресурсов приложения в отдельном пространстве имен
go-app-namespace
. - Deployment: Определяет стратегию развертывания для приложения, с начальным количеством подов равным двум. Включает в себя настройки аффинити для оптимального распределения подов по зонам доступности и узлам.
- Resources: Настройки ресурсов для контейнеров, включая запросы и лимиты CPU и памяти, учитывающие как пиковую, так и обычную нагрузку.
- Probes: Настройки
livenessProbe
,readinessProbe
иstartupProbe
для управления жизненным циклом подов и учета времени инициализации приложения. - CronJob: Две задачи
CronJob
для автоматического масштабирования количества подов в соответствии с дневным циклом нагрузки - увеличение количества подов до четырех в пиковые часы и снижение до двух в непиковые.