Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая работа №4

.docx
Скачиваний:
0
Добавлен:
28.09.2026
Размер:
3 Мб
Скачать
☆

Министерство цифрового развития связи и массовых коммуникаций

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ»

Кафедра «Сетевые информационные технологии и сервисы»

Отчёт по практической работе №4

по дисциплине «Управление облачными высоконагруженными приложениями»

Выполнил: студент группы М092501(70)

Ягудин Р.Р.

Проверил: асп. Вакурин И.С.

Москва 2025 г.

СОДЕРЖАНИЕ

№ стр.

1

Подготовка окружения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

2

Установка kube-prometheus-stack и Nginx через Helm . . . . . . . . . . . . . . . . . . . . . . .

4

3

Создание и настройка web-страницы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

4

Проверка работоспособности Nginx и мониторинга . . . . . . . . . . . . . . . . . . . . . . . . .

8

  1. Подготовка окружения

Вводим команду 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-контроллера

  1. Установка 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

  1. Создание и настройка 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

  1. Проверка работоспособности 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

9