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

ВСФиУ Лабораторная работа №4

.docx
Скачиваний:
10
Добавлен:
27.02.2023
Размер:
374.69 Кб
Скачать

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

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

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

Лабораторная работа №4

«Развертывание приложения»

Выполнил: Иванов И.И.

Группа: МБСТ0000

Проверил:

Старший преподаватель

Шалагинов А.В.

______________________

Москва 2000

Цель работы

Ознакомиться с развертыванием приложения в среде Kubernetes;

Изучить развертывание приложения в среде Kubernetes при помощи утилиты kubectl.

Выполнение работы

Теоретическая часть:

На запущенном кластере Kubernetes можно разворачивать контейнеризированные приложения, для чего требуется создание конфигурации развертывания. Развёртывание сообщает Kubernetes, как создавать и обновлять экземпляры вашего приложения. После создания развёртывания ведущий узел Kubernetes планирует запустить экземпляры приложения на отдельных узлах в кластере.

Рисунок 1 — Схема размещения узлов и приложений в кластере

Когда экземпляры приложения (containerized app на рис. 1) были созданы, контроллер развёртывания Kubernetes (Deployment Control Plane на рис. 1) непрерывно отслеживает их. Если узел (Node на рис. 1), на котором размещен экземпляр, вышел из строя или был удалён, контроллер развёртывания вместо этого экземпляра использует экземпляр на другом узле в кластере. Этот процесс представляет собой механизм самовосстановления, обеспечивающий работу кластера в случае возникновения аппаратных неисправностей либо технических работ.

До того, как появились системы оркестровки, для запуска приложений обычно использовались установочные скрипты, которые не перезапускались после сбоя компьютера. Создавая экземпляры приложений и поддерживая их работу на нескольких узлах, развёртывания Kubernetes коренным образом отличаются в плане управления приложениями.

Создавать и управлять развёртыванием можно через командный инструмент Kubernetes под названием Kubectl. Kubectl использует API Kubernetes для работы с кластером. В этом модуле вы узнаете про наиболее используемые команды Kubectl, необходимые для создания развёртываний, которые будут запускать приложения в кластере Kubernetes.

При создании развертывания нужно указать образ контейнера приложения и количество запущенных реплик. Впоследствии эти параметры можно изменить

Практическая часть:

Процесс выполнения первого шага запечатлен на рисунке 2.

Рисунок 2 — Первый шаг. Проверка Kubectl CLI

В тренировочной среде предустановлен Kubectl CLI. Для проверка его работоспособности можно запросить версию приложения командой kubectl version. Для получения списка узлов в кластере требуется ввести команду kubectl get nodes.

Для создания развертывания необходимо ввести команду

kubectl create deployment kubernetes-bootcamp \

--image=gcr.io/google-samples/kubernetes-bootcamp:v1

в которой передается название развертывания и полный путь к изображению для развертывания. Эта команда делает следующее:

  • Поиск подходящего узла для запуска приложения;

  • Планирование запуска приложения на этом узле;

  • Конфигурация кластера для запуска экземпляра приложения на новом узле, при необходимости.

Для получения списка развертываний требуется ввести команду kubectl get deployments.

В результате выполнения второго шага создано развертывание приложение, которое можно видеть в списке на рисунке 3.

Рисунок 3 — Второй шаг. Создание развертывания.

Поды внутри кластера работают в изолированной сети. К ним можно обратиться извне кластера при помощи API Kubernetes, с которым взаимодействует kubectl. При помощи kubectl можно создать прокси, который будет перенаправлять сообщения в изолированную сеть. Создание прокси возможно при помощи команды kubectl proxy.

Теперь, введя в окне терминала команду curl http://localhost:8001/version, мы можем обратиться к API приложения, как если бы оно было запущено локально.

Далее мы экспортируем имя пода в переменную среды POD_NAME при помощи команды

export POD_NAME=$(kubectl get pods -o go-template \

--template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')

Теперь можно использовать это имя для обращения к конечной точке, сгенерированной Kubernetes на основе имени пода, при помощи команды

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/

в результате чего мы получаем множество информации о поде (рисунок 4).

Рисунок 4 — Третий шаг. Обращение к конечной точке, сгенерированной

на основе имени пода, при помощи kubectl прокси

Заключение

В процессе лабораторной работы были изучены процесс создания развертывания в Kubernetes при помощи консольной утилиты Kubectl, обращение к внутренней сети кластера при помощи прокси, создаваемого Kubectl.