Оркестрация контейнеров на примере Kubernetes | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 9 июля, печатный экземпляр отправим 13 июля.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №51 (341) декабрь 2020 г.

Дата публикации: 15.12.2020

Статья просмотрена: 101 раз

Библиографическое описание:

Евстратов, В. В. Оркестрация контейнеров на примере Kubernetes / В. В. Евстратов. — Текст : непосредственный // Молодой ученый. — 2020. — № 51 (341). — С. 11-13. — URL: https://moluch.ru/archive/341/76636/ (дата обращения: 30.06.2022).



В данной статье приводятся общие принципы настройки кластера Kubernetes. Затронуто создание развёртывания (deployment), сервиса (service) и постоянного тома (persistent volume). В конце статьи приведена ссылка на исходный код конфигурации кластера Kubernetes с некоторыми часто используемыми сервисами.

Ключевые слова: виртуализация, контейнеризация, микросервисы, микросервисная архитектура оркестрация контейнеров, kubernetes, docker.

Введение.

Контейнеризация позволяет не затрачивать много ресурсов на запуск множества приложений, которые требуют различного окружения [1].

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

В частности, может расти количество микросерисов (добавление на сайт умного калькулятора, появление мобильного приложения, которое должно работать с теми же базами данных, появляются дополнительные интерактивные разделы сайта, необходимость сбора большей аналитики о поведении пользователей, желание собирать информацию о состоянии самой системы, которая всё это обеспечивает и так далее). Увеличение количества микросервисов увеличивает количество различных контейнеров, в которых работают эти микросервисы, а также усложняет взаимосвязи между этими контейнерами. Нескольких команд для запуска контейнера становится недостаточно, чтобы управлять такой системой.

Для решения этой проблемы были придуманы так называемые системы оркестрации контейнеров — системы, способные самостоятельно управлять жизненным циклом контейнеров, распределять нагрузку между несколькими контейнерами, собирать и выводить информацию о системе в целом.

В статье будет рассмотрена запуск и настройка основных элементов очень популярного на сегодняшний день [2] оркестратора контейнеров kubernetes. В конце статьи будет дана ссылка на реальную реализацию нескольких сервисов (nginx, WordPress, phpMyAdmin, MySQL, Grafana, InfluxDB и ftps server) в одном кластере.

Перед началом

Для запуска kubernetes на локальной машине необходимо следующее программное обеспечение:

Docker — ПО для создания контейнеров [1], [3].

Minikube — инструмент для создания кластера (среды, в которой будут работать наши контейнеры) на локальном компьютере [4].

Kubectl — инструмент командной строки для управления кластером, с его помощью можно управлять ресурсами кластера, развёртывать (deploy) приложения и смотреть логи [5]. Название можно читать как kube control.

VirtualBox — ПО для виртуализации кластера на локальной машине [ссылка на скачивание ВБ].

Очевидно, что для создания кластера, управляющего контейнерами необходимо иметь образы этих контейнеров. Пример сборки контейнера с помощью docker можно найти тут [1], или тут [6].

Запуск кластера

Кластер создается и запускается очень просто:

minikube start --vm-driver=virtualbox

Здесь мы конкретно указываем, какую виртуальную машину мы используем для виртуализации кластера. Если опустить этот флаг, то по умолчанию виртуальной машиной будет docker. Это не плохо, однако, в этом случае дополнительно придется настраивать взаимодействие виртуальной машины докера с основной ОС. Для VirtualBox’a это делать не нужно.

Создание развёртывания

Кластер kubernetes оперирует подами (pod) — группой из одного или нескольких контейнеров. Развёртывание (deployment) — сущность, которая управляет жизненным циклом одного или нескольких подов.

Создание развёртывания:

kubectl create deployment node --image=image_name

Здесь image_name — имя контейнера, который мы хотим развернуть, node — имя развёртывания.

После создания развертывания внутри кластера появится под, который представляет наш контейнер. К этому поду нельзя подключиться «из вне», у него есть только внутренний IP адрес, доступный изнутри кластера. Для получения доступа к поду необходимо создать сервис (service).

Создание сервиса

Мы можем создать сервис прямо для нашего развёртывания:

kubectl expose deployment node --type=LoadBalancer --port=8080

—-type=LoadBalancer необходимо для того, чтобы кластер понимал, что к данному развертыванию (нашему поду) можно подключиться из вне. --port=8080 явно указывает порт, через который это можно сделать.

Для получения краткой информации о только что созданном сервисе можно воспользоваться командой:

kubectl get services

Использование конфигурационных файлов

В общем случае флагов настройки сервиса и развёртывания может быть очень много и может быть неудобно писать длинные команды чтобы сконфигурировать кластер. Для упрощения этой задачи используются конфигурационные файлы. Файлы используют синтаксис yaml и имеют соответствующее расширение.

Пример конфигурационного файла, который создаёт развёртывание и сервис аналогичные показанным выше, приведен ниже.

apiVersion: apps/v1

kind: Deployment

metadata:

name: node

spec:

template:

spec:

containers:

— name: node

image: image_name

ports:

— containerPort: 8080

—--

apiVersion: v1

kind: Service

metadata:

name: nginx

spec:

type: LoadBalancer

ports:

— port: 8080

Создание постоянного тома

Данные, которые хранятся в контейнере являются эфемерными. После смерти контейнера все хранящиеся на нём данные удаляются. Чтобы была возможность постоянно (независимо от жизненного цикла подов) хранить какие-либо данные, необходимо создать внутри кластера «хранилище» данных, так называемый постоянный том (persistent volume). Вообще говоря, типов «хранилищ» в kubernetes несколько [7], но для создания его на локальном компьютере подойдет persistent volume.

Пример конфигурационного файла persistent volume для mysql:

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv

labels:

type: local

spec:

storageClassName: mysql

capacity:

storage: 1Gi

accessModes:

— ReadWriteOnce

hostPath:

path: "/tmp/mysql»

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

Заключение

Конкретные примеры создания и настройки сервисов: nginx, WordPress, phpMyAdmin, MySQL, Grafana, InfluxDB и ftps server, — можно посмотреть в github репозитории автора [https://github.com/vesord/ft_services]. Там же можно посмотреть скриншоты того, как выглядит панель управления кластером (запускается командой minikube dashboard).

Дополнительную информацию о kubernetes или о работе с minikube можно найти на официальном сайте www.kubernetes.io.

Литература:

  1. Евстратов В., Контейнеризация как современный способ виртуализации / В. В. Евстратов // Молодой учёный № 49 (339) декабрь 2020.
  2. Почему Kubernetes стал настолько популярен — Текст: электронный // Тараненко П. // URL: https://vc.ru/dev/107126-pochemu-kubernetes-stal-nastolko-populyaren (дата обращения 12.12.2020)
  3. Get Started with Docker. — Текст: электронный // Официальный сайт Docker — URL: https://www.docker.com/get-started (дата обращения 12.12.2020)
  4. Minikube start. — Текст: электронный // Официальный сайт minikube. — URL: https://minikube.sigs.k8s.io/docs/start/ (дата обращения 13.12.2020)
  5. Install and Set Up Kubectl. — Текст: электронный // Официальный сайт Kubernetes. — URL: https://kubernetes.io/docs/tasks/tools/install-kubectl/ (дата обращения 13.12.2020)
  6. Изучаем Docker. — Текст: электронный // Хабр. — URL: https://habr.com/ru/company/ruvds/blog/438796/ (дата обращения 13.12.2020)
  7. Volumes. — Текст: электронный // Официальный сайт Kubernetes. — URL: https://kubernetes.io/docs/concepts/storage/volumes/ (дата обращения 14.12.2020)
Основные термины (генерируются автоматически): кластер, контейнер, конфигурационный файл, локальная машина, локальный компьютер, сервис, система, создание кластера, создание развертывания, том.


Ключевые слова

виртуализация, docker, микросервисы, контейнеризация, микросервисная архитектура оркестрация контейнеров, kubernetes

Похожие статьи

Автоматизация развертывания компонент распределенного...

В представленной работе решается задача автоматизации развертывания компонент распределенной системы при помощи средств

Автоматизация развертывания компонент распределенного приложения современными средствами управления конфигурацией.

Введение в контейнеры, виртуальные машины и docker

Контейнеры и виртуальные машины схожи по своей цели: изолировать приложение и его

Docker — программное обеспечение для автоматизации развёртывания и управления

Docker контейнеры могут работать как на реальной локальной машине или машине в датацентре...

Конфигурирование и тестирование производительности...

Ключевые слова: вычислительный кластер, кластер рабочих станций (COW)

Термин «полноценный» в данном случае означает, что такой компьютер может работать автономно

При рассмотрении вариантов создания кластера, приобретения нового и использования уже...

Запуск задач на вычислительном кластере ВолгГТУ

Зачастую вычислительные кластеры работают под управлением операционной системы Linux. Так сложилось, что у многих жителей России установлена операционная система семейства Windows. Поэтому при работе на вычислительном кластере возникают большие трудности, что...

Преимущества использования контейнерной архитектуры...

Для создания образа используются специальный файл — Dockerfile. В нем содержатся команды, необходимые для построения образа.

Для удобства оркестрации и совместного использования нескольких контейнеров в рамках одного Docker хоста, обычно используется...

Основные принципы построения современных компьютерных...

Архитектура компьютерных систем предназначена для решения обширного круга задач, направленных на создание комплекса аппаратных и программных средств. Предназначение архитектуры определять основные правила для обеспечения взаимодействия элементов...

Выбор архитектуры локальной сети при проектировании систем...

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

Резервное копирование данных в локальной вычислительной сети

– полное резервирование — создание резервного архива всех системных файлов, состояние системы и ее реестр, а также других файлов для восстановления рабочей станции; – добавочное резервирование — создание резервного архива всех файлов, которые были...

Облачные технологии | Статья в сборнике международной научной...

Развитие аппаратного обеспечения (а именно создание многоядерных процессоров и

Облачные сервисы, предоставляющие те или иные виды услуг, в свою очередь делятся на три

«Облака» такого типа предлагают легкий и доступный в цене способ развертывания...

Похожие статьи

Автоматизация развертывания компонент распределенного...

В представленной работе решается задача автоматизации развертывания компонент распределенной системы при помощи средств

Автоматизация развертывания компонент распределенного приложения современными средствами управления конфигурацией.

Введение в контейнеры, виртуальные машины и docker

Контейнеры и виртуальные машины схожи по своей цели: изолировать приложение и его

Docker — программное обеспечение для автоматизации развёртывания и управления

Docker контейнеры могут работать как на реальной локальной машине или машине в датацентре...

Конфигурирование и тестирование производительности...

Ключевые слова: вычислительный кластер, кластер рабочих станций (COW)

Термин «полноценный» в данном случае означает, что такой компьютер может работать автономно

При рассмотрении вариантов создания кластера, приобретения нового и использования уже...

Запуск задач на вычислительном кластере ВолгГТУ

Зачастую вычислительные кластеры работают под управлением операционной системы Linux. Так сложилось, что у многих жителей России установлена операционная система семейства Windows. Поэтому при работе на вычислительном кластере возникают большие трудности, что...

Преимущества использования контейнерной архитектуры...

Для создания образа используются специальный файл — Dockerfile. В нем содержатся команды, необходимые для построения образа.

Для удобства оркестрации и совместного использования нескольких контейнеров в рамках одного Docker хоста, обычно используется...

Основные принципы построения современных компьютерных...

Архитектура компьютерных систем предназначена для решения обширного круга задач, направленных на создание комплекса аппаратных и программных средств. Предназначение архитектуры определять основные правила для обеспечения взаимодействия элементов...

Выбор архитектуры локальной сети при проектировании систем...

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

Резервное копирование данных в локальной вычислительной сети

– полное резервирование — создание резервного архива всех системных файлов, состояние системы и ее реестр, а также других файлов для восстановления рабочей станции; – добавочное резервирование — создание резервного архива всех файлов, которые были...

Облачные технологии | Статья в сборнике международной научной...

Развитие аппаратного обеспечения (а именно создание многоядерных процессоров и

Облачные сервисы, предоставляющие те или иные виды услуг, в свою очередь делятся на три

«Облака» такого типа предлагают легкий и доступный в цене способ развертывания...

Задать вопрос