Практическая работа №4
.docxМинистерство цифрового развития связи и массовых коммуникаций
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
СВЯЗИ И ИНФОРМАТИКИ»
Кафедра «Сетевые информационные технологии и сервисы»
Отчёт по практической работе №4
по дисциплине «Управление облачными высоконагруженными приложениями»
Выполнил: студент группы М092501(70)
Ягудин Р.Р.
Проверил: асп. Вакурин И.С.
Москва 2025 г.
СОДЕРЖАНИЕ
|
|
№ стр. |
1 |
Подготовка окружения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
3 |
2 |
Установка kube-prometheus-stack и Nginx через Helm . . . . . . . . . . . . . . . . . . . . . . . |
4 |
3 |
Создание и настройка web-страницы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
7 |
4 |
Проверка работоспособности Nginx и мониторинга . . . . . . . . . . . . . . . . . . . . . . . . . |
8 |
Подготовка окружения
Вводим команду sudo apt update для обновления имеющихся пакетов
Рисунок 1 – Обновление списка пакетов
Вводим команду minikube start для запуска локального Kubernetes-кластера
Рисунок 2 – Запуск локального одноподового Kubernetes-кластера
Вводим команды minikube version, helm version и kubectl version для проверки версий установленных инструментов
Рисунок 3 – Проверка версий установленных инструментов
Вводим команды minikube addons enable metrics-server и minikube addons enable ingress для активации встроенных дополнений Minikube (metrics-server собирает метрики использования ресурсов (CPU, память) с подов и нод, ingress — включает Ingress-контроллер, позволяющий маршрутизировать внешний трафик к сервисам по определённым правилам)
Рисунок 4 – Активация metrics-server
Рисунок 5 – Активация Ingress-контроллера
Установка kube-prometheus-stack и Nginx через Helm
Вводим команду kubectl create namespace для создания изолированного пространства имён, что позволяет разделить ресурсы данной работы от других работ и упростить управление и удаление всех связанных объектов
Рисунок 6 – Создание изолированного пространства имён
Вводим команду helm repo add prometheus-community https://prometheus-community.github.io/helm-charts для добавления официального Helm-репозитория сообщества Prometheus
Рисунок 7 – Добавление официального Helm-репозитория сообщества Prometheus
Вводим команду helm repo update для обновления списка доступных чартов
Рисунок 8 – Обновление списка доступных чартов
Вводим нижеприведённую команду для установки kube-prometheus-stack, включающий в себя Prometheus (система сбора и хранения метрик), Grafana (система визуализации данных), Alertmanager (предназначен для обработки оповещений)
Рисунок 9 – Установка kube-prometheus-stack
Рисунок 10 – Установка kube-prometheus-stack
Вводим нижеприведённую команду для установки Nginx с помощью Helm-чарта из OCI-реестра Docker
Рисунок 11 – Установка Nginx
Рисунок 12 – Установка Nginx
Создание и настройка web-страницы
Вводим нижеприведённую команду для создания HTML-файла, который будет использован в качестве замены стандартной страницы Nginx. Моё имя в HTML-файл было добавлено для индивидуализации работы
Рисунок 13 – Создание HTML-файла
Вводим команду kubectl create configmap nginx-custom-html --from-file=index.html -n yagram-lab4 для загрузки файла в Kubernetes как ConfigMap — объекта, предназначенного для хранения конфигурационных данных, который будет смонтирован в контейнер Nginx.
Рисунок 14 – Загрузка файла в Kubernetes как ConfigMap
Вводим нижеприведённую команду для изменения спецификации Deployment, т.е.:
добавляется том (volume) на основе ConfigMap с именем nginx-custom-html
том монтируется в контейнер по пути /opt/bitnami/nginx/html/index.html как файл
Pod перезапускается и Nginx начинает «отдавать» изменённую страницу
Рисунок 15 – Модификация Deployment
Проверка работоспособности Nginx и мониторинга
Вводим команду kubectl get pods -n yagram-lab4 для отображения всех подов в namespace yagram-lab4. Необходимо дождаться, пока все компоненты перейдут в статус Running
Рисунок 16 – Проверка состояния подов
Вводим команду kubectl port-forward svc/my-nginx 8080:80 -n yagram-lab4 для проброса порта Nginx на локальный порт, что позволяет открыть web-страницу в браузере и убедиться, что отображается кастомная страница с моим именем
Рисунок 17 – Проброс порта Nginx
Рисунок 18 – Web-страница Nginx с именем
Открываем второй терминал и вводим следующие команды:
kubectl get secret -n yagram-lab4 prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo для получения зашифрованного пароля администратора Grafana. Декодирование из base64 позволяет использовать его при входе в Grafana
kubectl port-forward svc/prometheus-stack-grafana 3000:80 -n yagram-lab4 для проброса порта Grafana на локальный порт
Рисунок 19 – Получение пароля от Grafana и проброс порта
Рисунок 20 – Вход в Grafana
Импортируем дашборд в Grafana. Для этого, нажимаем на «Dashboards» → «Import» → вводим 12708 (NGINX Prometheus Exporter Dashboard) → «Load» → Выбираем в качестве источника данных «Prometheus» → «Import»
Рисунок 21 – Создание дашборда
Рисунок 22 – Ввод ID дашборда
Рисунок 23 – Выбор «Prometheus» в качестве источника данных
Обновляем web-страницу с Nginx несколько раз, в результате чего в Grafana отобразятся 3 графика метрик Nginx: обработанные соединения, активные соединения и количество запросов.
Рисунок 24 – Графики метрик Nginx в Grafana
Рисунок 25 – Графики метрик Nginx в Grafana
