diff --git a/04-telematics.tex b/04-telematics.tex index b8317cd..add2a42 100644 --- a/04-telematics.tex +++ b/04-telematics.tex @@ -133,7 +133,7 @@ DevOps-инженер -- высококвалифицированный спец Используемые инструменты -- Jenkins, Docker, Kubernetes, Git, Приложения для управления инфраструктурой (Terraform), платформенные и облачные сервисы, утилиты мониторинга и оповещений. \section{Система контейнеризации Docker} -Виртуализация и контейнеризация +\subsection{Виртуализация и контейнеризация} Микросервисная архитектура -- это такой подход, при котором единое приложение строится как набор небольших сервисов, каждый из которых работает в собственном процессе и коммуницирует с остальными, используя легковесные механизмы. Такой подход получил распространение в середине 2010х годов в связи с развитием гибких практик разработки. @@ -146,36 +146,41 @@ DevOps-инженер -- высококвалифицированный спец \item повсеместное использование виртуализации \end{itemize} -Виртуализацция -- это технология с помощью которой на одном физическом устройстве можно создать несколько виртуальных компьютеров. На компьютере с одной ОС можно запустить несколько других ОС или приложений. ОС запускаются в виртуальной среде, но используется инфраструктура хоста и позволяет им работать на одном устройстве изолированно друг от друга. +Виртуализацция -- это технология с помощью которой на одном физическом устройстве можно создать несколько виртуальных компьютеров. На компьютере с одной ОС можно запустить несколько других ОС или приложений. ОС запускаются в виртуальной среде, но используется инфраструктура хоста и позволяет им работать на одном устройстве изолированно друг от друга. ОС компьютера, на котором работает виртуальная среда, называется хост-системой, а ОС, которая запускается в этой виртуальной среде -- гостевой системой. Хостовая и гостевая ОС могут иметь взаимоисключающие компоненты, но виртуальная среда позволяет урегулировать эти конфликты. -Виртуальная среда создаётся при помощи программной или аппаратной схемы - гипервизора -- инструмента, обеспечивающего параллельное управление несколькими ОС на одном хосте. +Виртуальная среда создаётся при помощи программной или аппаратной схемы -- гипервизора -- инструмента, обеспечивающего параллельное управление несколькими ОС на одном хосте. -Виртуализация. Типы гипервизоров +\subsection{Виртуализация} +Гипервизор -- это инструмент, обеспечивающий параллельное управление несколькими ОС на хосте. +\begin{figure}[H] + \centering + \fontsize{12}{1}\selectfont + \includesvg[scale=1.01]{pics/04-t-00-hyperv.svg} +\end{figure} + +Типы гипервизоров Гипервизоры: \begin{itemize} -\item аппаратные -- VMWare ESX, Citrix Hyper-V -\item устанавливаемые поверх базовой ОС -- MS Virtual PC -\item гибридные -- +\item аппаратные -- VMWare ESX, Citrix XenServer, MS Hyper-V; +\item устанавливаемые поверх базовой ОС -- MS Virtual PC, VMWare Workstation, VirtualBox; +\item гибридные -- Citrix XenServer, Microsoft Hyper-V. \end{itemize} -Новый подход к виртуализации +Назрела необходимость в ином подходе к построению архитектуры приложений, при котором ядро ОС поддерживают несколько изолированных экземпляров пользовательского пространства вместо одного (namespaces)\footnote{namespace -- это функция ядра Linux, позволяющая изолировать и виртуализировать глобальные системные ресурсы множества процессов.}. Возникновение контейнеризации -- контейнерной виртуализации. Контейнеризация использует ядро хост системы, оставаясь при этом не менее функциональной и обеспечивающей необходимую изоляцию. -Назрела необходимость в ином подходе к построению архитектуры приложений, при котором ядро ОС поддерживают несколько изолированных экземпляров пользовательского пространства вместо одного (namespaces). Возникновение контейнеризации -- контейнерной виртуализации. К использует ядро хост системы, оставаясь при этом не менее функциональной и обеспечивающей необходимую изоляцию. +Контейнерная виртуализация -- это способ, при котором виртуальная среда запускается прямо из ядра хотовой ОС (то есть без установки другой ОС). В данном случае изоляцию ОС и приложений поддерживает контейнер. Контейнер содержит всё, что нужно для запускаемого в нём приложения: код, библиотеки, инструменты и настройки. Всё это упаковано в отдельный образ, работу которого запускает контейнерный движок. -КВ -- это способ, при котором вирт среда запускается прямо из ядра хотовой ОС (то есть без установки другой ОС). В данном случае изоляцию ОС и приложений поддерживает контейнер. Контейнер создержит всё, что нужно для запускаемого в нём приложения: код, библиотеки, инструменты и настройки. Всё это упаковано в отдельный образ, работу которого запускает контейнерный движок. +В случае с контейнерами у нас есть базовая аппаратная инфраструктура (железа компьютера), ОС и движок, установленный на этой ОС. Движок управляет контейнерами, которые работают с библиотеками и зависимостями сами, в одиночку. В случае виртуальной машины у нас есть ОС на базовом оборудовании (наше железо), затем гипервизор, а затем виртуальные машины. У каждой ВМ внутри своя ОС. Контейнеры загружаются быстрее и работают эффективнее. -В случае с контейнерами у нас есть... - -Проблемы контейнеризации -Для контейнеров используется виртуализация на уровне ядра, то есть от гипервизора можно отказаться. однако: +Проблемы контейнеризации. Для контейнеров используется виртуализация на уровне ядра, то есть от гипервизора можно отказаться. Однако: \begin{itemize} -\item контейнео использует ядро хост системы, проблемы с безопасностью +\item контейнер использует ядро хост системы, а отсюда проблемы с безопасностью; \item в контейнере может быть запущен экземпляр ОС только с тем же ядром, что и у хост ОС. \end{itemize} Возможно получить доступ к возможностям Windows и Linux одновременно при помощи WSL. -Как решить проблемы проблемы контейнеризации +Как решить проблемы проблемы контейнеризации: \begin{itemize} \item следование принципу единственной ответственности (Single responsibility principle) \item Всё необходимое должно быть в самом контейнере @@ -183,9 +188,9 @@ DevOps-инженер -- высококвалифицированный спец \item контейнер должен быть эфемерным \end{itemize} -Контейнеризаторы приложений +Контейнеризаторы приложений (Docker, LXC) -Докер -- платформа автоматизации и доставки приложений. +Докер -- платформа автоматизации и доставки приложений с открытым исходным кодом. Платформа позволяет быстрее тестировать и выкладывать приложения, запускать на одной машине требуемое количество контейнеров. \begin{itemize} \item сервер dockerd \item API @@ -194,16 +199,16 @@ DevOps-инженер -- высококвалифицированный спец Компоненты докер \begin{itemize} -\item хост -- хост ПК -\item демон -- фоновый процесс, работающий на хосте постоянно и ожидающий команды управления. Имеет информацию обо всех контейнерах на хосте. -\item клиент -- клиент при помощи с котрого пользователь взаимодействует с демоном +\item хост -- хост ПК, компьютер, на котором работает докер. +\item демон -- фоновый процесс, работающий на хосте постоянно и ожидающий команды управления. Имеет информацию обо всех контейнерах на хосте. Демон знает всё о контейнерах, запущенных на одном хосте -- сколько всего контейнеров, какие из них работают, где хранятся образы и так далее. +\item клиент -- клиент при помощи с котрого пользователь взаимодействует с демоном. Это может быть консоль, API или графический интерфейс. \item образ -- неизменяемый образ приложения (можно представить как установочный диск) \item контейнер -- развёрнутое на основе образа и запущенное приложение. \item докерфайл -- файл-инструкция для сборки докер-образа. Строки файла это слои образа. Инструкции обрабатываются последовательно. \item docker registry -- репозиторий, в котором хранятся образы (докерхаб) \end{itemize} -Образ -- шаблон с набором инструкций, предназначенных для создания контейнера. Приложения упаковываются в образ +Образ -- шаблон с набором инструкций, предназначенных для создания контейнера. Приложения упаковываются в образ, из которого затем создаются контейнеры. Контейнер -- уже собранное, настроенное и запущенное на основе образа приложение в изолированное среде. diff --git a/pics/04-t-00-hyperv.svg b/pics/04-t-00-hyperv.svg new file mode 100644 index 0000000..bda6c8d --- /dev/null +++ b/pics/04-t-00-hyperv.svg @@ -0,0 +1,205 @@ + + + + + + + + + + image/svg+xml + + + + + + + Хост компьютер + гипервизор + гостевая ОС + гостевая ОС + гостевая ОС + приложения + приложения + приложения + + + + + + + + + +